ISSUE #1
SEPTEMBER 1975
$1.50
the small systems journal
Which Microprocessor
for you?
Cassette Interface — Your
key to inexpensive bulk memory
Assembling Your Assembler
Can YOU use these SURPLUS
KEYBOARDS?
(You bet you can!)
COMPUTERS -
the World's Greatest Toy:
Join now
Since 1947, ACM has served as the educational and
scientific society for computing professionals— 30,000
strong and growing.
Write today
For regular and student membership information
send the attached coupon to ACM headquarters. With
Special Interest Groups covering every major computing
discipline and local Chapters in most metropolitan areas,
ACM is probably the organization you're looking for.
Association for Computing Machinery
1 1 33 Avenue of the Americas, New York, N. Y. 1 0036
I would like to consider joining ACM.
Please send more information.
City
Zip
The MODULAR MICROS
from MARTIN RESEARCH
Here's why the new MIKE 2 and MIKE 3
are the best values in microcomputers to-
day!
8008 OR 8080
Martin Research has solved the problem
bothering many potential micro users
.... whether to go with the economical
8008 microprocessor, or step up to the
powerful 8080. Our carefully designed
bus structure allows either processor to
be used in the same system!
The MIKE 3 comes with an 8080 CPU
board, complete with crystal-controlled
system timing. The MIKE 2 is based on
the 8008. To upgrade from an 8008 to
an 8080, the user unplugs the 8008 CPU
board and plugs in the 8080 CPU. Then
he unplugs the 8008 MONITOR PROM,
and plugs in the 8080 MONITOR
PROM, so that the system recognizes the
8080 instruction set. That's about it!
If the user has invested in slow memory
chips, compatible with the 8008 but too
slow for the 8080 running at full speed,
he will have to make the 8080 wait for
memory access— an optional feature on
our boards. Better still, a 4K RAM board
can be purchased from Martin Research
with fast RAM chips, capable of 8080
speeds, at a cost no more that you might
expect to pay for much slower devices.
In short, the MIKE 2 user can feel confi-
dent in developing his 8008 system with
expanded memory and other features,
knowing that his MIKE 2 can be up-
graded to a MIKE 3— an 8080 system— in
the future.
EASE OF PROGRAMMING
Instructions and data are entered simply
by punching the 20-pad keyboard. Infor-
mation, in convenient octal format, ap-
pears automatically on the seven-
segment display. This is a pleasant con-
trast to the cumbersome microcom-
puters which require the user to handle
all information bit-by-bit, with a confus-
ing array of twenty-odd toggle switches
and over thirty red lights!
A powerful MONITOR program is in-
cluded with each microcomputer, stored
permanently in PROM memory. The
MONITOR continuously scans the key-
board, programming the computer as
keys are depressed.
Say the user wishes to enter the number
135 (octal for an 8008 OUTPUT 16 in-
struction). He types /, and the right-
hand three digits read 001. Then he
presses 3, and the digits say 013. Finally
he punches the 5, and the display reads
135. Notice how the MONITOR program
(Continued in column 3.)
Family
' 7
8
9 I
I 4
5
6 I
I '
2
3
Lc
0
• I
Introducing the family of modular micros
from Martin Research!
Choose either the economical 8008 proces-
sor, or the powerful 8080. Either CPU is
compatible with our advanced bus structure!
Plus, a convenient monitor program, in
PROM memory, allows you to enter instruc-
tions with the ease of a handheld calcul-
ator. Six large digits display data in octal
format.
Modularity makes for easy expansion. First
qualiry parts throughout. Professionally
made PC boards with plated holes, solder-
mask protection. 8080 CPU board features
versatile interrupt structure, multiprocessing
capability. Easy interfacing to input and
output ports.
MIKE 303A: CPU board with 8080, key
board/display board, PROM/RAM board
monitor PROM (256 bytes of RAM),
breadboard, - hardware, and instructions:
$395.00 kit, $495.00 assembled and tested.
MIKE 203A: CPU board with 8008, key-
board/display, PROM/RAM, breadboard,
hardware, and instructions: $270.00 kit,
$345.00 A&T.
MIKE 3-5 or 2-5: 4K RAM board with
450 ns static RAM: $165.00 kit, $190.00
A&T.
FREE
CATALOG!
Kits: US & Canada only.
Master Charge accepted.
OEMs: write for
quantity prices.
MARTIN RESEARCH
Microcomputer Design
1825 S. Halsted St.
Chicago. IL 60608
(312) 829-6932
shifts each digit left automatically as a
new digit is entered! The value on the
display is also entered into an internal
CPU register, ready for the next opera-
tion. Simply by pressing the write key,
for example, the user loads 135 into
memory.
The MONITOR program also allows the
user to step through memory, one loca-
tion at a time (starting anywhere), to
check his programming. Plus, the Swap
Register Option allows use of the inter-
rupt capabilities of the microprocessor:
the MONITOR saves internal register
status upon receipt of an interrupt re-
quest; when the interrupt routine ends,
the main program continues right where
it left off.
We invite the reader to compare the pro-
grammability of the MIKE family of
microcomputers to others on the mar-
ket. Notice that some are sold, as basic
units, without any memory capacity at
all. This means they simply cannot be
programmed, until you purchase a mem-
ory board as an "accessory." Even then,
adding RAM falls far short of a conve-
nient, permanent MONITOR program
stored in PROM. Instead, you have to
enter your frequently-used subroutines
by hand, each and every time you turn
the power on.
EASY I/O INTERFACE
The MIKE family bus structure has been
designed to permit easy addition of in-
put and output ports. A hardware inter-
face to the system generally needs only
two chips— one strobe decoder, and one
latching device (for output ports) or
three-state driving device (for inputs). A
new I/O board can be plugged in any-
where on the bus; in fact, all the boards
in the micro could be swapped around in
any position, without affecting opera-
tion. I/O addresses are easy to modify by
reconnecting the leads to the strobe de-
coder (full instructions are provided);
this is in marked contrast to the clumsy
input multiplexer approach sometimes
used.
POWER & HOUSING
The micros described to the left are com-
plete except for a cabinet of your own
design, and a power supply. The basic
micros require +5 V, 1.4 A, and — 9 V,
100 MA. The 4K RAM board requires
5 V, 1 A. A supply providing these volt-
ages, and ±12 V also, will be ready soon.
OPTIONS
A number of useful micro accessories are
scheduled for announcement. In addi-
tion, the MIKE 3 and MIKE 2 may be
purchased in configurations ranging from
unpopulated cards to complete systems.
For details, phone, write, or check the
reader service card.
COMPUTER EXPERIMENTER SUPPLIES
FACTORY FRESH— PRIME QUALITY
PERFORMANCE GUARANTEED
MICROPROCESSORS AND MEMORY
Commercial Grade — up to 35°C.
8008 $ 35.00
8080 135.00
2102 3.50
2102-2 4.50
These units are factory
fresh, full spec devices.
COMPUTER GRADE REGULATED POWER SUPPLIES
All units are short-circuit proof, fold back current limited and with
over-voltage crowbar protection.
MD-15
±15 Volt at 200MA
Dual Tracking
$30.00
MD-5-1
+5 Volt at 1
$24.50
Amp
MD-5-3
+5 Volt at 3 Amp
$34.50
MD-5-6
+5 Volt at 6 Amp
$44.50
MICRO COMPUTER SUPPLY
COMBINATIONS
For the 8008
MD-08— +5 volt at 6 amp, -12, -9 at 200
ma $75.00
Forthe8080
MD-80— +5voltat6amp,+12vat200ma . . .$75.00
FortheFairchild F-8
MD-8— +5 volt at 6 amp, +12 vat 200 ma . . .$65.00
For the M6800
MD-5— +5 voltat6amp $44.50
All units are short circuit proof, fold-back current
limited and with over voltage crowbar protection.
All Prices Subject to Change Without Notice
Minimum Order $10.00
Add $1.00 to Cover Postage and Handling
Send Check or Money Order (No C.O.D.) To:
N. J. Residents Add 5% Sales Tax
TTL INTEGRATED CIRCUITS
All devices are factory fresh, full spec units.
7400 23
7404 25
7442 60
7447 95
7448 95
7475 60
7490 60
7493 60
74125 55
74126 55
74192 1.10
74193 1.10
MICRO DIGITAL CORP.
BOX 413, EDISON, NJ 08817 • (201) 549-2699
In the Queue
Foreground
RECYCLING USED ICs 20
Hardware — Mikkelsen
DECIPHERING MYSTERY KEYBOARDS 62
Hardware — Helmers
LIFE Line 72
Applications — Helmers
Background
WHICH MICROPROCESSOR FOR YOU? 10
Hardware — Chamber/in
RGS 008A MICROCOMPUTER KIT 16
Review— Hogenson
SERIAL INTERFACE 22
Hardware — Lancaster
WRYTE for BYTE 44
For Profit — Ryland
WRITE YOUR OWN ASSEMBLER 50
Software — Fylstra
Nucleus
What is BYTE? 4
BYTE magazine is published HOW BYTE Started 9
monthly by Green Publishing,
Inc., Peterborough, New OlIDS — Newsletters 40
Hampshire 0 3 4 5 8.
Subscription rates are $12 for Book RevieWS 84
one year worldwide. Two
years, $22. Three years, $30. Letters 87
Second class postage
application Pending at Byter's Djgest gQ
Peterborough, New Hampshire ' 3 "**
03458 and at additional RpoHpr'Q ^Prvirp Qfi
mailing offices. Phone: neaaer s service yb
603-924-3873. Entire contents
copyright 1975 by Green
Publishing, Inc., Peterborough,
NH 03458. Address editorial
correspondence to Editor,
BYTE, Box 378, Belmont MA
021 78. From inception to
press in seven weeks — surely a
magazine creation record.
Guinness please take notice.
BITE #1
SEPTEMBER 1975
■/££ "^.'^P** *^-^,V>-
HH
(Mir- £v ip 4jL *» fc«* .
piicfi i ii
p. 10
" >*585,
' Cte
SBk'
r,
mm
p. 20
p. 22
p. 50
p. 62
Carl Helmers:
What is BYTE?
"It could not have been
long before some
wizard of verbal magic
figured out that a group
of little bits must con-
stitute a mouth water-
ing BYTE."
"... the term byte has
become part of the lexi-
con."
For the hardware per-
son, "the fun is in the
building."
This is the first issue of a
new publication — BYTE — a
monthly compendium of
information for the owners
and users of the new
microcomputer systems
becoming widely available at
moderate cost. To formal and
informal students of
computer science, the choice
of the name BYTE is quite
appropriate. For a large
number of applications of
this new technology of
inexpensive computers,
character string and text, data
(basic unit, one byte) is an
important consideration.
Bytes are the units of data
manipulated by many of the
small computer systems
designed by readers — or
assembled using one of a
number of kit products now
on the market.
The most c ommon
definition of a byte is that of
a unit of information
containing 8 bits. This unit of
information can at any time
represent one of 28 = 256
possible things — for instance,
one of the ASCII or EBCDIC
character codes, one of the
integers from 0 to 255, a
signed integer from -128 to
+127, etc. The origin of the
term "byte" lies in IBM's
documentation and
terminology for the
extremely successful System
360 series. The folk tale has it
that IBM needed a more
"personalized" (i.e. unique)
term for the old standby of
earlier generation computers,
the "character". The term
had to be less tied to a
specific type of data such as
character codes — and had to
take on a generic meaning as
"unit of storage". With that
functional specification for
the required term, it could
not have been long before
some wizard of verbal magic
figured out that a group of
little bits must constitute a
mouth watering byte.
With the term's
widespread use in the
computer field due to IBM's
benign influence, the term
byte has become part of the
lexicon. The fundamental
significance of a byte as a
unit of information makes
BYTE an appropriate name
for the publication. BYTE is
your unit of information on
the state of the art of small
computer systems for
individual persons, clubs and
classroom groups. Each
month you will find
information ranging from
computer club announce-
ments to manufacturers'
advertisements, from
technical details of hardware
and software to humorous
articles and editorial
opinions.
The Home Brew Computing
Trilogy
The story of computing is
a story composed of several
elements. A good way to look
at the story is as a trilogy of
interrelated themes . . .
HARDWARE
SOFTWARE
APPLICATIONS. ..
You need the hardware
before you can progress
through the first gate of a
system. A virgin computer is
useless so you add some
software to fill it out. And
the whole point of the
exercise — in many but not
all cases — is to come up with
some interesting and exotic
applications.
The technical content of
BYTE is roughly divided into
the trilogy of hardware,
software and applications.
Each component of the
trilogy is like a facet of a
brilliant gem — the home
brew computer applied to
personal uses. The trilogy is
not confined to home brew
computers alone of course.
In the personal computing
field as in any endeavor there
are people who will have
foremost in their minds any
one of these three topics to
the exclusion of the other
two. For instance some of the
people I know are interested
in software — and pretty
exclusively software. They'll
tend to concentrate on
software as much as possible
and try to get a minimal
amount of hardware
sufficient to experiment with
software. A person with a
primary interest in software
will oftentimes be the person
who purchases a kit computer
because the kit minimizes the
amount of hardware
knowledge the person is
required to have.
An example of another
kind of person — in terms of
isolated characteristics — is
the hardware kind of person.
Here the emphasis of the
work with home brew
computing is on putting
together the hardware,
designing the hardware,
making things that quote
"work'' unquote. A
"hardware person" in many
cases may not do much else
— but he or she certainly will
accomplish the design goal.
This is the person who builds
(the first) editorial
up a computer system to the
state where it might even be
able to do a bootstrap off
tape — then drops the system
and decides to build a better
one. The fun here is in the
building, not in the using and
programming.
Then in this description of
possible ways of approaching
the home brew hobby there is
the applications person. This
person's attitude is somewhat
a synthesis of the other two
types. The applications
person is typically interested
in getting a particular
program up and running. So a
Space War freak would spend
a good portion of available
time getting the hardware and
software needed to play space
war. A LIFE addict would
spend a fair amount of time
getting the hardware and
software for the game of
LIFE — and fooling around
with LIFE patterns. And a
person who enjoys other
computer games — using the
game as a goal — spends much
time assembling a
hardware/software system for
the game. A person interested
in toy robots would have a
combined hardware/software
problem of coordinating and
controlling movement — this
home roboteer must design
the mechanical details, design
a control algorithm — and if
sophisticated fun is required,
must design a pattern
recognition input device and
algorithm for interpreting
scenes. A model railroader
requiring a computer
controlled layout again has
this applications model —
computer controlled yard and
main line switches — and
faces a choice of possible
hardware and software
components needed to make
the application.
Now, aspects of the trilogy
exist in any particular person
who experiments with the
computer systems. A
common combination is for
the application to drive the
hardware and software
choices. Then there is the
person who builds the
hardware first — getting
caught up in the "neatness"
of a logical construction in
the same way that a
mathematician goes off the
deep end with a neat
theorem. If you're starting as
such a hardware hacker, you
may come to the point where
you say "Hmmm — I've built
the hardware, so now what
do I do with it?" Here the
applications are following the
design of the computer. It's
the same way with many
kinds of programming ... the
software is an exploration of
the possibilities of the
hardware. As a software
hacker you might turn to the
pure logic of programming —
writing and trying out
routines for things ranging
from augmentations of the
instruction set to file
managers, to games simple
and sophisticated. Or you
may just fool around with
programming with no specific
end in mind in terms of
applications, for the sole
purpose of seeing what you
can do with the machine.
As a home brew computer
software experimenter, you'll
find an emotional kinship
with the people who take
part in the automotive
hobbies. What does a
"performance" automobile
buff do with the machine —
once all the optional
improvements and features
have been added underneath
the personalized paint job?
The auto nut takes his car out
to the local drag strip or
other test track and opens
up the throttle to see what
the engine and drive train will
do in terms of speed and
acceleration (proper spelling:
exhilaration). Well, for
computer experimenters
there is a logical drag strip in
every computer — an
instruction set waiting to be
explored. You exercise this
logical drag strip by seeing
what you can do in the
invention of neat little (and
not so little) programs to do
useless (equivalent of real
drag strip) performance tests
in artificial circumstances —
or really useful tasks
(equivalent to normal
transportation functions of
autos). I haven't yet figured
out what the computer
equivalent of an air scoop
hood is — or the equivalent of
the weird mechanical
contrivances I often see on
the derriere of "muscle" cars.
You might even be the
type of person who wants to
do a certain programming
technique just for the sake of
programming - you say to
yourself: "OK — I want to
write a BLURPTRAN
language compiler and code
generator, so what hardware
do I need to do it?" As such a
person, you would then
choose a computer system in
packaged and/or self-designed
form such that it would fit
the compiler writing goal.
In truth many will find it
best to seek a sort of
"A virgin computer is
useless so you add some
software to fill it
out . . ."
Sophisticated fun re-
quires sophisticated
thought and hard
work . . .
"Hmmm — I've built
the hardware, so now
what do I do with it?"
"Well, for computer
experimenters there is a
logical drag strip in
every computer — an
instruction set waiting
to be explored . . ."
interactive — balanced -
relationship between the
three aspects of the computer
trilogy. At any given time,
almost anyone has some
aspects of all three combined
within his own philosophy of
home brew computing.
BYTE — the magazine -
addresses this mixture that
occurs in various people by
providing articles permuting
and combining these areas.
In this first issue hardware
articles include "Deciphering
Mystery Keyboards," an
article on recycling used ICs,
and Don Lancaster's article
on serial output interfaces.
Articles on software include a
description of the assembler
concept by Dan Fylstra.
Applications are found in the
first segment of LIFE Line.
This application includes
information on programming
techniques as well as
suggestions regarding required
hardware.
So here in the first issue
you find an example of the
mixtures of these factors
which go into home brew
computing. This mixture of
aspects is a guiding theme of
the current and following
issues of BYTE — one of the
key editorial goals is to cover
a complete range of ideas
spanning this triumvirate of
concepts.
The Impossible Dream
or, "Wouldn't it be neat to have a computer all one's
own without being as rich as Croesus?"
The art of home brew
computing has come a long
way in the past few years. To
paraphrase the science fiction
author Robert Heinlein,
"When it's time to do home
brew computing, people do
home brew computing." That
time has come today, with
the advances in memory and
processor technology
inherent in large scale
integration. The present
devices are not as good as the
"Thorsen Memory Tubes" in
Heinle in's Door Into Summer
- but it's getting almost to
the point where a basement
tinkerer can put together a
manufacturable robotic
device and plant the
economic acorn which will
grow into an industrial oak
tree.
My own first exposure to
the idea of home brew
computing was about eight
years ago when I was
attending high school in rural
New Jersey. A ham (radio
amateur variety) friend of
mine at that time was
attempting to get a surplus
RCA computer card rack into
operation as his own
conception of a home
processor. I didn't know
enough at the time even to
ask an intelligent question
about its design. The thing
was a monstrous 3-level card
rack with a heavy wire wrap
back plane and transistor
logic with integration to the
level of modular cards. I
don't think this friend of
mine ever got his processor
working to any significant
extent — but the impression
was made: "Wouldn't it be
neat to have a computer all
one's own without being as
rich as Croesus?" I filed away
the thought of a home brew
computer as an "impossible"
dream at that time — how
could I afford a computer if I
could barely afford a beat up
old Hallicrafters SX-99
receiver and flea power ham
transmitter? That did not
stop me from having fun with
computers — it merely caused
a redirection of attention to
the use of computers
financed by agencies other
than myself ... for a while.
The while lasted several
years as I bootstrapped
myself through college with
FORTRAN, COBOL, PL/1,
BAL and a bit of financial aid
from a private foundation.
Along about 1972 when I
started reading about the LSI
computers being designed by
Intel - the 8008 and 4004 -
I began to revive that old
dream of "having a personal
computer." Here was a single
IC chip - the 8008 - which
would give me a real stored
program machine at
reasonable ("reasonable" =
under $1000) cost. After
attending an Intel seminar in
1972, I resolved that I would
actually build an 8008
computer.
The resolution was a long
time being turned into reality
— I did not actually begin
design and construction until
January 1974. I took my
time for numerous
reasons . . . among them
being the fact that I had to
learn something about the
way hardware works, had to
equip a laboratory of sorts,
got this bug about
self-publishing the results
along the way*, and so
on ... I finally got an 8008
computer which would
execute instructions in the
middle of the summer of
1974 — and to quote one of
the subscribers to my self-
published series of articles. "I
learned a lot . . .," just as he
did. So much for the personal
involvement — I've built a
kluge of sorts — the software
hacker's first attempt at
hardware — and have learned
quite a bit as a result. You —
the reader of BYTE — can go
that route or use a much
easier route — there are
several manufacturers of kit
products advertising in this
magazine. And you'll find a
magazine full of helpful
information which I didn't
have.
. . . CARL
*l got the idea of self-publishing
from a pamphlet put out by SOL
III Publications, Farmington,
Maine — which has since been
turned into a book entitled The
Shoestring Publisher's Guide —
full of useful materials on
publishing by individuals and
small organizations.
World's Most Inexpe
ASIC Language System
$995
Limit: one per i uslomer.
OEFER expires September 15, 1975
Two 4,096 word Memory Boards (kit)
Allair 8K BASIC Language. This language was chosen for the
Altair Computer because of its versatility and power and because
it is easy to use (comes with complete documentation). Altair
8K BASIC has many features not normally found in BASIC lan-
guage including an OUT statement and corresponding INPut
function that allows the user to control low speed devices
(machine control without assembly language). Leaves 1750 words
in 8K machine lor programming and storage.
NOTE: Altair BASIC comes in
either paper tape or cassette
tape. Specify when ordering.
Interface Board Options. The Parallel Interface Board is used
to connect the Altair 8800 to external devices that send and
receive parallel signals. Many line printers require a Parallel
Interface Board. I he RS232 Serial Board is used to connect the
Altair 8800 to external devices that send and receive RS232 serial
signals. Most computer terminals require an RS232 Serial Interface
Board. The TTY Serial Interlace Board is used to connect the
Altair 8800 to an ASR-33 or KSR-33 teletype (20 milliamp current
loop). The TTL Serial Interlace Board is for custom interfacing.
The Audio Cassette Interlace Board is used to connect the Altair
8800 to any cassette tape recorder. Il winks b\ changing the
Your choice of Interface Boards (kit)
Altair 8K BASIC Language
electrical 'signals from the computer to audio tones. It can be
used to store unlimited amounts of information coming out of
the computer and it can be used to put information back into
the computer.
PRICES:
Altair Computer kit with complete assembly instructions $439
Assembled and tested Altair Computer $621
1,024 Word Memory Board $97 kit and $139 assembled
4,096 Word Memory Board $264 kit and $338 assembled
Full Parallel Interlace Board $92 kit and $114 assembled
Serial Interface Board (RS232) $119 kit and $138 assembled
Serial Interlace Board (TTL or TTY— teletype) $124 kit and $146 assembled
Audio Cassette Interface Board $128 kit and $174 assembled
4K BASIC language (when purchased with Altair,
4,096 words of memory and Interface Board) $60
8K BASIC language (when purchased with Altair, two
4,096 word memory boards and Interface Board) $75
COMTER II $780 kit
Teletype ASR-33 $1500 (assembled only)
Inpul Output Devices. The Comter II Computer Terminal has
a full alpha-numeric keyboard and a highly-readable 32-character
display. It has its own internal memory of 25b characters and
complete cursor control. Also has its own built-in audio cassette
interface that allows you to connect the COMTER II to any tape
recorder for both storing data from the computer and feeding it
into the computer. Requires an RS232 Interface board.
I he Standard ASR-33 Teletype prints 10 characters per second.
It has a built-in paper tape reader and punch. Has standard 120
day Teletype warranty. Requires a Serial TTY Interface board.
NOTE: The Altair 8800 can be connected to any number of
input/output devices other than the ones listed above.
MAIL THIS COUPON TODAY
□ Enclosed is check i.c
□ BankAmericard #™_
__- Dor Master Charge #--
"Creative Electronics"
6328 Linn, N.E., Albuquerque. NM 87I08 505/265-7553
* D $995 BASIC System Special with following Interface Board: D Parallel
□ Serial RS232 □ Serial TTY □ Serial TTL □ Audio Cassette
D Altair 8800 □ Kit D Assembled O Options (list on separate sheet)
Include $8 for postage and handling
□ Please send free Altair System Catalog
NAME
ADDRESS
CITY —STATE & ZIP
Credit Card Expiration date , . ___
MITS/6328 Linn. NE, 'Albuquerque. NM 87108 505/265-7553
Warranty: 90 class on parts for kits and 90 days on parts and labor for assembled units.
Prices, specifications and delivery subject to change.
• ••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••«.
•••••
•••••
•••••
••••■
•••••
•••••
•••••
•••••
•••••
•••••
•••••
•••••
••••
• •••••••••••••••••• § ••••••••••••••••• i • • • • i • • •••••••••• S • • • • • X -
» titiitt* ttiiitittiiiiiitiittitii •••«*■«■"
c%
2nd prize:
|::::6060cpU
••••
••••
••••
••••
••*•■
!••••■
••••••
••••••
•••••■
•••••■
•••••■
•••••■
•••••■
••••••
•••••■
••••••
••••••
•••••■
••••••
••••••
•••••■
••••••
•••••■
•••••■
••••••
•••••■
•••••■
•••••■
••••••
••••••
••••••
••••••
•••••■
••••••
•••••■
••••••
••••••
••••••
••••••
••••••
••••••
•••••■
••••••
••••••
••••••
•••••■
••••■
•••••■
•••••■
••••••
••••••
••••••
•••••■
••••*•
••••••
••*••■
•••••■
••••■
••••••
$•*..■
•••••■
•••v.*
• * Jf :
did prize: j
dOOdcpu!
We were 1st to offer the 8008 to hobbyists over 16
months ago; now we're setting the pace again with a
powerful new 16 bit microcomputer IC in a 40 pin DIP,
made by:
RflDSI
oxao
o
YOU MAY WIN ONE OF THESE CHIPS --- SIMPLY:
1) Reveal the Secret Microcomputer Co.'s true identity
2) Tell us in 25 words or less why you should re-
ceive a free chip
If you can convince our jaded judges, in a form suit-
able for use in this family (?) magazine, you win.
*
•• •
r ft r I -ri
41
CAVE
9rafi>
FINE PRINT: ALL ENTRIES MUST BE POSTMARKED BY AUG. 31 AND BE IN OUR
HANDS BY SEP 7, 1975; ENTRIES BECOME PROPERTY OF BILL G0DB0UT ELEC-
TRONICS. ALL CONTESTANTS RECEIVE A DATA SHEET ABOUT OUR FIRST PRIZE
FOR THEIR TROUBLE. WINNER WILL BE NOTIFIED BY OCT. 1, 1975. IF YOU
DON'T WIN ANYTHING THIS TIME AROUND DON'T FEEL TOO BAD; ENTER OUR
COMING CONTEST FOR A COMPLETE 16 BIT MICROCOMPUTER KIT. THESE CON-
TESTS SPOTLIGHT PRODUCTS TO BE INTRODUCED BY US IN THE FALL OF '75.
SEND ENTRIES TO "BYTE CONTEST", BOX 2355, OAKLAND AIRPORT, CA 94614.
from the Publisher
how
BITE
started
Two series of events came
together and triggered BYTE.
One was the surprising
response I received from the
readers of 73 Magazine
(amateur radio) every time I
published an article involving
computers. Being a curious
person I decided to learn
more about them, only to
find my way blocked by
formidable obstacles. The
more I tried to dig into the
subject the more I found that
there was a need for
information that was not
being satisfied.
The other event was the
success of 73, with more
subscriptions and advertising
calling for some sort of
computerization of the
drudgery — the billing, record
keeping, reader's service,
indexing, and such. I knew
what I wanted done and had
a good idea of what I had to
spend to accomplish this, so I
started talking to computer
salesmen . . . only to find that
I wasn't even able to read
their literature, much less
have even a vague idea of
what they were saying.
Some deep well of
obstinacy within me fought
back and refused to let me
throw a dart to pick out the
computer system I needed. I
felt that as a businessman
running a good sized small
business and as the editor and
publisher of an electronics
magazine, I damned well
should be able to come to
grips with the salesmen and
pick out a computer system
on some sort of rational basis.
But the more I tried to get
information, the more I
realized that it was going to
be very hard to get.
Between my professional
need to understand
computers and my amateur
interest in the subject I found
myself subscribing to one
newsletter after another
. . . talking at exhaustive
length with computer savvy
73 readers . . . reading books
. . . and wearing computer
salesmen out. I discovered an
interesting thing — few of the
hardware chaps could talk
software — and vice versa.
Further, neither could talk
much about applications.
There ought to be a
magazine covering the whole
thing, thought I. A magazine
which would help the
neophite to grapple with
programming lan-
guages . . . would permit the
beginner to build
microcomputers and
peripherals . . . would provide
a dialog for the more
sophisticated to communicate
as well. How about a
publication which would
cover all aspects of small
computer systems?
As the computer hobby
newsletters arrived I looked
them over. Some were very
well done, some pretty
juvenile. One chap was doing
a splendid job . . . designing
his own hardware . . . devel-
oping software . . . plus
writing and publishing a
monthly magazine on the
subject just about single
handed. This was Carl
Helmers and his ECS Journal,
which was in its fifth issue,
having just started in January
(this at the time being May). I
got together with Carl and
explained my idea and
suggested that it was time
to get a good professional
magazine going in the field,
one which would help
computer hobbyists get the
information they needed and
which might thus encourage
manufacturers to come out
with more hardware for the
growing body.
Carl had been building up
his circulation to ECS
gradually, with it being about
300 in May. We figured to go
all out and run off 1000
copies of the first issue of
continued on page 96
BITE
staff
EDITOR
Carl T. Helmers Jr.
ASSISTANT PUBLISHER
Judith Havey
ASSOCIATE EDITORS
Dan Fylstra
Chris Ryl'and
CONTRIBUTING EDITORS
Hal Chamberlin
Don Lancaster
EDITORS
John Burnett
Susan G. Philbrick
PRODUCTION MANAGER
Lynn Panciera-Fraser
ART DEPARTMENT
Nancy Estle
Neal Kandel
Peri Mahoney
Bob Sawyer
PRINTING
Biff Mahoney
PHOTOGRAPHY
Bill Heydolph
TYPESETTING
Barbara Latti
Marge McCarthy
ADVERTISING
Bill Edwards
Nancy Cluff
MARKETING
David Lodge
CIRCULATION
Susan Chandler
Dorothy Gibson
Pearl Lahey
INVENTORY CONTROL
Marshall Raymond
DRAFTING
Bill Morello
Which Microprocessor
National Semiconductor's IMPS and IMP-16 computers were originally offered as completely-
populated subsystem cards such as the one pictured here.
by
Hal Chamberlin
Box 295
Cary NC 27511
At this time there are
three microprocessor chips or
chip sets readily available to
the hobbyist: the 8008, the
8080, and the IMP-16. The
first two were pioneered by
Intel and the last is a National
Semiconductor invention.
Chips and/or kits utilizing
each of the three
microprocessors are available
from at least two sources
catering to hobbyists as of
this writing. This level of
availability and popularity is
not even approached by other
microprocessors, therefore
this discussion is being
confined to these three.
Comparing computers is
like comparing people: the
conclusions depend on the
application, the
circumstances, and personal
preference. The comparisons
made will be based on use of
the microprocessor as a
general purpose computer.
For our purposes a. general
purpose computer is one
which has read-write memory
for the bulk of its storage,
which is expected to run a
variety of programs, and for
which the end use is the
development and execution
of programs written by the
user. General purpose
computers are also expected
to be able to control a variety
of input-output equipment.
Instruction sets will be
compared on the basis of
assembly language
programming. Speed will be
compared on the basis of the
time1 necessary for the
machine to complete a
non-trivial task. Complexity
will be compared on the basis
of ease of understanding
microprocessor operation as
well as the sheer number of
parts required to implement a
system. Finally, cost will be
compared on the basis of
minimum systems capable of
assembling programs for
themselves given the
existence of suitable I/O
devices.
Before getting into
comparisons, we will take a
brief look at the leading
Reprinted from The Computer Hobbyist, Box 295, Cary
NC 27511.
10
for You?
The MITS Altair 8800 is one package in which you can purchase an 8080 based system.
features of each
microprocessor. Then the
comparisons will be made in
each performance area
elaborating on individual
features as necessary.
The Intel 8008 Processor
The 8008 was the first
microprocessor to be
introduced and the first to be
available to the hobbyist. It
has an 8 bit instruction and
accumulator length. There are
essentially only two memory
addressing modes: immediate,
and zero displacement
indexed. Subroutine and
branch addresses are full
length absolute, allowing
branching anywhere with one
instruction. Subroutine
return addresses are saved on
an internal 8 level stack
which puts a 7 deep
restriction on subroutine
nesting. Much of the
instruction set power is
derived from the six
additional 8 bit index
registers which may count,
save, or address memory. The
maximum directly
addressable memory is 1 6k
bytes; in addition, 8 input
and 24 output devices may be
directly addressed with a one
byte instruction. CPU speed
is modest ranging from 20
microseconds for a register
operation to 32 microseconds
for a memory operation to 44
microseconds for a jump or
call. A selected chip, the
8008-1, reduces these times
to 12.5, 20 and 27.5
microseconds respectively. A
single level of interrupt is
provided but external
hardware is necessary for
complete status saving during
interrupts. Interfacing the
chip to the rest of the system
is fairly involved and requires
from 20 to 70 TTL packages
depending on the system
performance desired. The
lower figure will barely
function while the higher one
includes a console, complete
interrupt system, and
dynamic memory interface
with direct memory access
capability. Most of the
interfacing complexity can be
blamed on overzealous
designers trying to make-do
with an 18 lead package.
Present cost to the
experimenter ranges from
$40 to $80 with the "dash
one" version bringing roughly
50% more.
The Intel 8080 Processor
The 8080 is Intel's sequel
to the 8008. Basically it has
more of everything. The
instruction set contains all of
the 8008 instructions making
it upward compatible at the
assembly language level.
Major additions to the
instruction set include direct
load and store of the
accumulator, double
precision (1 6 bits) add and
increment for address
calculation, and a pushdown
stack of indefinite length in
memory thus allowing
unrestricted subroutine
nesting. Addressable memory
Comparing computers is
like comparing people;
the conclusions depend
on the application, the
circumstances, and per-
sonal preference.
has been increased to 64k
bytes and addressable 1/0
devices have been increased
to 256 inputs and 256
outputs at the expense of 2
byte 1/0 instructions.
Execution speed has been
considerably improved also.
Register operations take 2
microseconds, memory
operations require about 3.5
microseconds, and subroutine
calls consume 8.5
microseconds. Interrupts
work the same way as on the
8008 but everything required
for complete status saving is
provided as well as an
interrupt enable/disable flag.
Interfacing an 8080 is
generally regarded as being
simpler than interfacing an
8008. There is only a slight
11
The 8080 is Intel's sequel to the 8008. Basically it
has more of everything . . .
improvement in the minimum
system, about 15 chips, but a
full-bore system may be cut
in half to 35 chips. The 40
lead package allows a separate
16 bit address bus and 8 bit
data bus, as well as simplified
timing and control. Present
cost to the hobbyist is about
$160.
The National IMP-16
The IMP-16 is one of the
older microprocessors and for
a long time the only one
with a 16 bit wordlength.
The programmer is supplied
with four 16 bit accumulators
and a 16 word stack. The
instruction set is typical of
many 16 bit minicomputers,
and in many ways resembles
that of a NOVA. Four general
address modes are provided,
base page direct, program
counter relative, and indexed
using either accumulator 2 or
accumulator 3. In addition,
The IMP-16 is the first
of the 16-bit micros . .
A good instruction set
should be well organ-
ized . . .
LOAD, STORE, JUMP, and
CALL can be indirect
addressed using any of the
addressing modes to get to
the address pointer. Two
memory modification instruc-
tions are provided, ISZ
(Increment memory, Skip if
Zero), and DSZ which allows
much counting and indexing
to be done in memory freeing
the registers for arithmetic.
The stack is used for
subroutine return addresses
but can also be used for
saving registers and status. A
unique feature is the
availability of an extended
instruction set chip which
provides automatic multiply,
divide, double word add and
subtract, and byte
manipulation. The CPU can
address 64k words but this
should be held to 32k if the
byte instructions are used.
The I/O instructions can also
address 64k devices. Another
unique feature is that several
bits of input and output are
provided by the
microprocessor itself making
communication with a
teletype possible without any
interface at all. Speed is good
ranging from 4.2
microseconds for a register
operation to 7 microseconds
for a memory operation. A
multiply takes about 160
microseconds which is still
considerably faster than a
software routine would be.
The IMP-16 provides two
priority levels of interrupt
and all of the hardware
necessary for complete status
save/restore. Interfacing is
conceptually simple and
requires 25 to 50 packages
depending on system
sophistication. Part of this
number is due simply to the
fact that 16 bits are to be
handled rather than 8. The
microprocessor is in the form
of five 24 lead packages
which for the most part are
simply wired in parallel. The
extended instruction set
resides in a sixth package.
Present cost of the standard
chip set is about $160. The
extended instruction set chip
is available only from
National at this time for $80.
Comparisons — Instruction
Sets
One of the most important
performance areas of a
microprocessor is the
instruction set. A good
instruction set should be well
organized so that it is easy to
learn, powerful so that
complex routines can be
coded with a small number of
instructions, memory
efficient so that complex
routines require only small
amounts of memory, and
time efficient so that only a
small number of memory
cycles is necessary to
complete a task. In addition,
performance should be
equally high on both
character oriented tasks and
numerically oriented tasks.
Instruction set
organization is best on the
8080 closely followed by the
8008 with the IMP-16 being
somewhat disorganized.
Consequently, the beginner
will find the 8008/8080 the
easiest to learn. Experience
has shown that beginners
prefer simple instruction sets
and that they retain a certain
"fondness" for their first
machine long after they have
graduated into much more
sophisticated endeavors. The
experienced programmer
however should experience
little difficulty keeping the
little quirks, distinctions, and
special cases straight when
working with the I MP-1 6.
Instruction set power is
best on the IMP-16, followed
by the 8080 with the 8008 a
distant third. Based on actual
experience, it may require as
few as one half as many
IMP-16 instructions to
program a task as 8008
instructions. The 8080 falls
about midway between the
extremes. There are many
reasons why the IMP-16 is
superior. Memory addressing
is much more flexible due to
the four addressing modes
and indirect addressing
capability. An additional
advantage is that the
arithmetic word length is the
same as the address length.
Since the return addresses are
put on a stack in all three
machines, multiple
entrypoint subroutines are
easy but the IMP-16 also
allows multiple return points
(return to CALL+1 on error,
CALL+2 otherwise, etc.) with
no additional instructions.
The 8080 is a big
improvement over the 8008
because registers may be
saved on the stack when they
are used by a subroutine and
then restored unaltered upon
return. This allows
subroutines to be called as
needed without regard to
which registers they may
destroy. Note, however, that
this capability may be added
to the 8008 quite simply. The
direct load and store
instructions of the 8080
reduce the number of lines of
code in a program.
Memory efficiency of the
instruction set is best on the
IMP-16 but is closely
followed by the 8080. The
8008 is not as bad as might
be presumed but is definitely
Instruction set organization and memory efficiency
are usually conflicting requirements.
12
* ki.
inferior. I n terms of numbers,
the 8080 may require 10 to
1 5 percent more memory bits
and the 8008 20 to 40
percent more. Note that these
figures are based on
optimized programs written
by experienced programmers.
The spread can be much
greater with inexperienced
programmers or hastily
written programs. It is also
interesting to note that
instruction set organization
and memory efficiency are
usually conflicting require-
ments. This is because
many of the lesser used
possible operation
combinations have been
culled from a memory
efficient set in order to
reduce the number of bits
required to encode the
instruction. Implied operands
are also utilized in order to
free up bits for other uses.
Experienced programmers are
able to plan ahead and avoid
having these restrictions
become restrictive. The 8008
and 8080 are as good as they
are because many of the
instructions are a single word
(8 bits) long whereas the
minimum instruction length
in the IMP-16 is 16 bits. This
is somewhat offset by the
three word (24 bit)
instructions of the 8008 and
8080 which in most cases
would only require 16 bits in
the IMP-16. A fringe benefit
of high memory efficiency is
that the shorter programs will
load faster regardless of the
loading method.
Time efficiency is by far
the best on the IMP-16 with
the 8008 a distant second and
the 8080 a slightly poorer
third. On a classic
minicomputer, a machine
cycle was the same as a
memory cycle in most cases.
As a result, a time efficient
instruction set meant a faster
machine without faster
hardware. Microcomputers on
the other hand may have very
few of their machine cycles
being memory cycles. As a
result, time efficiency may
have little relation to actual
machine speed but does
represent the potential speed
with an optimized CPU. Time
efficiency can be important
in multiprocessor systems
with a shared memory where
more memory cycles
increase the probability that
a CPU will have to await its
turn. The IMP-16 has a high
time, efficiency mainly
because twice as much data is
fetched in each memory
cycle. Further improvement
is due to the instruction set
power, requiring fewer
instructions to be fetched.
The 8080 has poorer time
efficiency than the 8008
mainly because the stack is in
memory. A subroutine call,
for example, requires 5
memory cycles, 3 to fetch the
instructions and two to stack
the return address.
Historically some
minicomputers were better at
handling character oriented
tasks and others were well
Scelbi Computer Consulting
Inc. is one of a number of
companies who take the Intel
8008 computer, package it
into a system design, and
sell the result as a system.
The photograph supplied hy
Scelbi with a press release
shows you the result of
assembling their new
"SCELBI-8B" version of the
8008. As a supplier to the
computer enthusiast market
from the start, Scelbi has
done a very credible job
of assembling a true system
product as opposed to a
bare-bones CPU which
merely blinks its lights
after assembly.
adapted to number crunching
tasks. Microcomputers are no
exception. Most micros have
been optimized for character
handling because of expected
high usage in terminals and
the 8008 and the 8080
belong to this class. The
IMP-16 on the other hand is
much better at numerically
Most micros have been
optimized for character
handling because of ex-
pected high usage in
terminals.
oriented tasks and was aimed
more toward machine tool
control and industrial
monitoring. Interestingly, use
of the extended instruction
set on the IMP-16 greatly
improves both character
handling and arithmetic
capability.
How About Running System
Software?
One performance area of
interest to hobbyists is the
suitability of a machine for
running a BASIC system. The
IMP-16 and the 8080 are
about equal in their ability to
compile BASIC quickly but
the IMP-16 without the
extended instruction set may
13
Speed in a hobby com-
puter system can be a
two-edged sword.
execute BASIC twice as fast.
This is due mainly to the all
floating point arithmetic that
BASIC r eq ui res. The
extended instruction set may
double the speed again if a lot
of multiplies and divides are
done. The 8008 can of course
run BASIC also but compile
and execution speeds are
likely to be one tenth of the
8080.
One other property of an
instruction set is the ease
with which it may be
assembled, either by hand or
with an assembler program.
In this respect, the 8008
comes out on top with the
8080 next and the IMP-16
last. Use of the mnemonics
and format recommended by
the manufacturer is assumed
in making this comparison.
8008 code is easy to hand
assemble because the octal
notation used corresponds to
the various fields in the
instruction word. Assemblers
for 8008 code can also be
quite simple because
instructions require at most
one operand and very few
instruction formats exist.
Further simplification results
from all addresses being
absolute and all mnemonics
being three characters. 8008
assemblers run on an 8008
can be as small as 2.5k bytes
for a limited implementation
but 4k bytes is more realistic
when providing an easy to use
assembler. If the hexadecimal
notation recommended by
Intel is used with the 8080,
hand assembly is definitely
more difficult. The assembler
also has a tougher time with
the two operand format and
other niceties defined for the
8080. The Intel version of the
8080 assembler requires 8k
bytes but it should be noted
that it provides macro
capability. Hand coding and
assembling for the IMP-16 is
harder yet due mainly to
relative addressing
considerations and a wider
variety of instruction
formats. National's version of
the assembler requires 4k
words and can produce
relocatable object code and
handle external symbols.
Is Speed Useful?
Speed in a hobby
computer system can be a
two-edged sword. A high
speed microprocessor requires
higher speed in other system
components such as memory
in order to realize its higher
speed. An 8008 for example
can run at full speed with
memories as slow as 3
microseconds access but the
8080 will have to wait on
memories slower than 520
nanoseconds and the IMP-16
requires 420 nanoseconds. If
the ready line is used on the
8008 and 8080 to permit the
use of slower memories, the
wait will be in increments of
whole machine cycles which
is 4 microseconds on the
8008 and 500 nanoseconds
on the 8080. Thus if
memory is a tad slow, one
cycle will be added to each
three cycle memory access
sequence slowing the system
down an average of 25
percent to 30 percent. The
IMP-16 does not have a ready
line, rather the user stretches
one of the clock periods in a
cycle long enough to permit
memory access. This scheme
has the advantage that the
stretch can set to the exact
amount needed. The higher
time efficiency of the IMP-16
instruction set will greatly
reduce the performance
impact of a slow memory as
compared to the 8080.
How Complex is the Interface?
The ranking on interface
complexity is 8080 (least),
IMP-16, and 8008. The
comparison is based on
sophisticated general purpose
implementations having a
complete 1/0 interrupt
facility, software console
using ASCII 1/0, and a
generalized input/output
memory bus allowing
simultaneous direct memory
access without affecting the
CPU. The ranking is the same
whether parts count or
conceptual complexity is
being considered. The
difference between the 8080
and the IMP-16 is primarily
due to the wider word of the
IMP-16 and less confusing
discussion of chip interfacing
in the Intel manual. The 8008
is just plain difficult to
understand and interface
correctly but once that is
done, either by the user, a
magazine, or a manufacturer,
the system should operate
just as well.
Software?
Software support is often
a big issue among industrial
users of microprocessors.
Unfortunately, the majority
of the software they are
fighting over is unavailable to
the hobbyist because of high
prices. It is not unusual for a
program such as an
assembler to cost as much as
a handful of microprocessors.
8008 and 8080 users can look
to Scelbi and MITS for some
software at reasonable prices
even if they did not purchase
their machines from these
sources. National has an
excellent body of software
for the IMP-16 but the
package price is $200 for
object tapes and source
listings. The hobbyist will
have to depend on himself,
kit manufacturers, and
publications for most of his
software in the near future.
Ultimately, the level of
software support will be
directly proportional to the
popularity of the
microprocessor.
And Finally . . .
There are a number of
other performance areas that
are only of minor interest to
hobbyists. Although there is a
large spread in the maximum
memory size, all three
machines are likely to have
ample addressing capability
for the hobbyist's memory
budget. The same may be said
relative to addressable I/O
devices. Power supply
voltages and power
consumption are also usually
of minor importance. All of
the microprocessors can be
successfully operated from
standard +15, +5 and -15
system supply voltages using
simple, •.■ fail-safe, zener
regulators. Package size and
pinout are unlikely to be
factors in hobbyist use.
This brings us to a
comparison of overall system
cost. First, the spread in chip
cost is roughly from $50 to
$1 50, so the spread in system
cost would be $100 at most.
An 8008 requires more
interfacing circuitry however
which reduces the spread
somewhat. After enough
memory to do assemblies or
run BASIC and a few I/O
devices are added, the $75
difference left may be small
compared to the total
investment. Nevertheless, an
8008 system will be the least
expensive followed by an
8080 system closely followed
thereafter by an IMP-16.
Which microprocessor for
you? The answer still depends
on the application,
circumstances, and personal
preference, but hopefully the
decision can be made with
more authority after reading
this article.
14
Last Chance -
DON'T MISS THE BOAT!
This is the last opportunity to become a CHARTER SUBSCRIBER to BYTE ... at the
special Charter rate of $1 0 per year.
Perhaps you've held off to see the first issue . . . perhaps you've just seen a friend's copy of
BYTE . . . whatever the reason . . . send in your $10 and be sure to get your next issue of BYTE
hot off the presses.
If you are reading a pass-along copy, just mark the subscription order that you'd like your
subscription to start with issue number 1 .
Name.
Address.
City.
| ~] BILLME
[~| Start with #1 BYTE
My occupation.
.State.
.Zip.
□ Check for $10 enclosed
j_] Bill BankAmericard or MasterCharge #
D Start with #2 BYTE
BYTE Peterborough NH 03458
15
The RGS 008A Microcomputer Kit
Review
by
James Hogenson
Box 295
Halstad MN 56548
The RGS 008A
microcomputer is a general
purpose machine based on
the Intel 8008 CPU chip. The
008A uses a minimum of 1k
of random access memory
and a bus type of I/O system
capable of handling up to 256
peripheral devices.
The basic kit consists of 6
printed circuit boards and all
components necessary to
build the CPU, 1k of memory,
the control panel and the
power supply. Molex pins or
sockets, edge connectors,
backplane, front panel
switches and LEDs, and a
power transformer are
included. A cabinet, some
hardware, line cord and fuses
are not included. The kit sells
for $375, making this one of
the least expensive kits on the
market.
Physical Construction
The control switches are
mounted directly on the
control panel PC board,
together with the LED
indicators. A printed circuit
backplane board is connected
to the back side of the
control panel. Once the
control panel and backplane
are wired together, anything
plugged into an edge
connector on the backplane is
automatically connected to
the system. The control panel
and backplane measure 4.8"
x 6.75". The double-sided
plug-in boards measure 4" x
6" with 72-pin edge
connectors, and have plated
through holes. The CPU with
all control circuitry included
is fitted onto only two of
these plug-in boards.
Microcomputers, microcomputers and more microcom-
puters! The number of options you have for a homebrew
system is expanding at a rapid rate - with the corresponding
difficulty in picking and choosing among the options. BYTE
has an answer to this problem - reviews of kits and equipment
from various manufacturers and advertisers in the magazine.
The idea of a review is to give the user's evaluation of the
product - and. in the process aid you in the choice of
equipment for your own homebrew system. Here is BYTE's
first review of an 8008 product - the RGS 008A microcom-
puter kit (made by RGS Electronics, 3650 Charles St., Suite
K, Santa Clara CA 95050).
James Hogenson provides this review of the RGS product,
based upon his own experiences assembling and utilizing the
computer. Jim built the kit early this year as part of his high
school Science Fair project activities designing an oscilloscope
CRT display. I think you'll find Jim's account to be a useful
source of information on the RGS product. . . . CARL
16
Is an RGS008A the
computer for your
system?
Here is one
RGS 008A's owner's
evaluation.
The control panel holds
three 8-bit binary LED
displays. Two of the displays
indicate the memory address
of the date or instruction
presently being operated
upon or executed. The third
display shows the contents of
the memory location
indicated by the memory
address displays.
The two LEDs not used in
the upper memory address
are used to indicate the
second and third bytes in a
two and three byte
instruction. Two additional
LEDs indicate the stopped
and waiting state of the CPU.
The only switches used on
the control panel are a
common 8-bit binary switch
register and 6 control
switches. The six control
switches and their functions
are:
Memory L oad . A
momentary switch which
loads the data presently on
the 8-bit switch register into
the memory location
specified by the memory
address register.
Load L. A momentary
switch which loads the
address set on the 8-bit
switch register into the lower
memory address register.
Load H. A momentary
switch which loads the
address on the switch register
into the upper memory
address register. (The three
load switches will operate
only when the CPU is in the
stopped state.)
Interrupt. A momentary
switch for entering interrupt
instructions.
Step. A momentary switch
for single stepping through a
program. The run/ wait switch
must be set on wait to single
step a program.
Run /Wait. A toggle switch
which is used to set the CPU
in either a run or a wait state.
During the run state, the CPU
operates normally. During the
wait state, the CPU does
nothing unless being single
stepped.
The 008A is designed to
be panel mounted. The entire
system is contained on
plug-in boards mounted on
the back of the control panel.
The entire unit may then be
mounted very neatly;
however, a nice improvement
would be for the
manufacturer to offer a
cabinet to mount the unit in.
The p o wer su p ply
included in the kit will
provide enough power to
allow for moderate expansion
of the system. If necessary,
auxiliary power supplies can
be purchased from the kit
manufacturer. The power
supply included in the kit will
produce -5 V at 5 Amps and
-1 2 V at 1 Amp. The -9 V for
the 8008 is derived from the
-12 V.
The only type of
peripheral interface presently
offered for the 008 A is a
parallel TTL-compatible
interface. The parallel
interface boards are also 4" x
6" boards which may be
plugged directly into the
backplane if desired. Up to
256 interface cards may be
used. The parallel interface
kit sells for $43.75.
A 008A cassette tape
adapter is offered for $100.
The FSK adapter's
data rate is 300 bits per
second. The popular 40-pin
UART chip is used for
parallel-to-serial and serial-to-
parallel conversion. The
cassette adapter kit includes a
parallel interface kit for
i nterfaci ng wi th the
computer. Only a cassete
deck with an auxiliary output
or earphone plug and an
optional remote start/stop
plug is required.
An ASCII keyboard is also
available from RGS. This
keyboard and the cassette
tape adapter are intended to
interface with the RGS 008A
microcomputer, so adapta-
tion would be a problem if
you have some other make of
computer. RGS says that a
serial interface is being
developed for use with
teletype, as well as a TV
typewriter.
Highlights
The 008A uses fewer
components, compared to
other 8008 systems I have
seen. The 008A computer
structure is basically similar
to other 8008 systems, with
one exception: The input/
output structure is unusual
for an 8008 system. Instead
of the more common port
17
system capable of handling
only 8 input and 24 output
devices, the 008A uses a bus
system capable of handling
256 bi-directional data
input/output channels. RGS
uses several of the 8008
chip's I/O channels
instructions to set up this bus
I/O System.
There are four input/
output instructions in the
008A's "instruction set:"
Select, Control, Input, and
Output. To select a
peripheral, the device number
is loaded into the
accumulator and a select
instruction is executed. This
enables the peripheral device.
If necessary, a control
instruction is available. Upon
its execution, the
accumulator data is made
available at the output and
the control strobe line is
pulsed. Once the device has
been selected and initialized,
data transfer using the input
and output instructions is
executed as it is in the port
system.
Each peripheral interface
board is jumper-wired for its
own device number. When
the device number of a
particular unit is selected,
data transfer between the
unit and the CPU is enabled
until another device number
is selected. When a control
instruction is executed, the
accumulator data is placed on
the I/O bus. The interface
transfers the data from the
bus to the interface output.
The control strobe line is
then pulsed. An output
instruction also causes the
accumulator data to be
placed on the I/O bus. The
interface transfers the data to
its output. This time the
output strobe line is pulsed.
On an input instruction, the
interface transfers data from
its input to the I/O bus. The
CPU then transfers the data
from the bus to the
accumulator. The input
strobe line is also pulsed.
The bus system has three
big advantages. The obvious
one is the capability
of handling up to 256
devices. The second
advantage is that each of the
256 channels will perform
both input and output. The
third advantage is the ability
to send control instruction,
thus eliminating the need to
use an adjacent I/O channel
for device control.
Ready and interrupt line
expansions may also be
brought out through the
peripheral interface boards.
Assembly
Most of the circuitry is
completed by soldering the
components on the various
PC boards. Although most of
the PC boards are double
sided, components need only
be soldered on one side since
all holes are plated through.
Edge connectors are
provided for each plug-in
board. These connectors must
be soldered on the backplane.
Some 68 wires must be
soldered between the
backplane and the control
panel. The backplane and
control panel are fastened
back to back using spacers on
long machine screws.
The control panel, CPU
boards, memory boards, and
parallel interface boards are
double sided PC boards with
plated through holes. These
PC boards seem to be of good
quality. The backplane board
and the power supply board,
however, are single sided and
not quite as good. Extreme
caution must be used as the
foil patterns on these single
sided boards will lift with
very little excessive heat
applied.
Only about half the power
supply circuitry is included
on the power supply PC
board. A power transistor and
a voltage regulator, both in a
T0-3 case, must be mounted
in a heatsink (supplied in kit)
on a chassis which must be
provided by the builder. The
power transformer, fuses,
filter capacitors and power
switch are also mounted on
the builder supplied chassis.
All of these components must
be point to point wired. Wire
must be supplied by the
builder.
Documentation
The manuals and
instructions provided for the
008A fall short. Anyone
planning to write up any
documentation in the future
should take note of this and
use the criticism
constructively.
The assembly instructions
provided for the 008A are
brief. The author of the
documentation spent very
little time on clarifications.
Someone who has had
considerable experience in
both electronic engineering
and computer science would
have very few problems with
the 008A. However, if a
product is made with the
intention of selling it to
everyone, the documentation
should be written to be
understood by everyone. This
includes people who are not
experts in hardware or
software.
Much of the construction
has to be done by following
the component placement
diagrams and circuit
diagrams. A diagram of the
foil pattern line-up for double
sided boards should have
been included in the 008A
documentation. For easier
reading, component
placement diagrams should be
black components on a grey
foil pattern diagram rather
than black on black.
The 008A documentation
provides only a brief
definition of each software
instruction. No information
describing the circuit
operation of the CPU is
provided. A brief description
of circuit operation is
provided for the parallel
interface kit and cassette
adapter kit. Only a small
amount of information is
provided on the use and
operation of the computer.
Although the 008A
documentation does include
complete circuit diagrams
with IC pinouts, absolutely
no troubleshooting
information is included.
Logic circuit troubleshooting
can be followed on the circuit
diagram after you have
checked wiring and
component placement, but
test points and voltages
should be given on the power
supply. Test points and
waveforms should be given
for devices such as a cassette
tape adapter. Even in the
18
logic circuitry, a few major
test points and the
specifications wouldn't hurt
anyone.
This author obtained his
troubleshooting information
via long distance calls to
California. The cause of
several problems was
narrowed down to about
three faulty components
which RGS cheerfully
replaced free of charge.
A nice addition to the
owners manual for those who
may assemble a 008A in the
future would be a series of
test routines to verify all
operations of the computer.
These routines should state
specifically, step by step,
what is to be done and the
results of each step. When
starting up a computer for
the first time, it is sometimes
difficult to determine
whether a problem is in the
hardware or the software,
especially if you are not
familiar with the machine in
the first place.
Software
The only difference in the
008 A instruction set as
compared to other 8008
based systems is the
input/output instruction
format as mentioned before.
Initial program loading is
through the control panel.
Startup is achieved by setting
the restart instruction on the
8-bit binary switch register
and depressing the interrupt
switch. As in other 8008
systems, the first 64 words of
memory are divided into 8
program start-up locations.
Any single-byte
instruction will be accepted
by the CPU at any time when
the interrupt switch is
depressed. Therefore, if you
get your computer into a
loop with no exit, set a halt
or return instruction and
depress the interrupt switch
to get out.
A software exchange
program is slowly getting
underway for the 008A. Each
user is asked to submit a
program to RGS. The
programs are compiled as
they come in, then sent out
to each 008A manual holder.
As of yet, exchange has been
slow. Ray Stevens, owner and
designer, expects the
exchange program to pick up
somewhat since the cassette
tape adapter, ASCII
keyboard, and some software
for each have recently
become available. The
available software (sent out
to owners of the units) deals
with program loading and
storage necessary in the
development of further
programs.
Conclusion
A generalized statement
summarizing the 008A scene
would have to be this: The
008A is one of the most
economical systems on the
market, offering a nearly
complete kit and software
exchange program. RGS
holds good potential for
becoming a healthy segment
in the growing world of
avocational computing. But
there is some work yet to be
done.
In the meantime, if you
are inexperienced in either
electronics or computer
science, you could run into
difficulties in assembling a
008A. Those of us who
already own a 008A
microcomputer should work
on building up the software
exchange program to a point
of excellence. In the interest
of obtaining a revised,
updated, improved and
rewritten owners manual, let
me suggest that all 008A
owners send RGS a letter
listing changes and
improvements they would
like to see.
The 008A is one of the
most econom ical
systems on the market,
offering a nearly
complete kit and
software exchange
program . . . But there
is some work yet to be
done.
19
Sweep the blow torch over the ICs pins-one complete sweep
once or twice a second.
Recycli
Used
ICs
n8
by
Carl Mikkelsen
35 Brookline St., No. 5
Cambridge MA 02139
The surplus market is
saturated with used printed
circuit boards from early
computer systems which
offer a very inexpensive per
chip source of ICs. Used
boards typically contain
50-200 chips of small scale or
medium scale integration,
usually with many simple two
input gates and four bit data
registers. Common part
numbers include 7400, 7402,
7404, 7408, 74126, 74174,
74175, etc. Through careful
shopping, I have found
boards with large numbers of
multiplexors such as 74151,
74153, and even scratch pad
registers - 7489. After
removing chips from the
boards and eliminating any
non-functional units, cost per
chip is from 3 to 8 cents,
resulting in an overall cost of
about one fourth to one
tenth of the individual chip
cost through other surplus
outlets.
Removing chips from
boards offers advantages over
purchasing chips surplus
which makes them attractive
for reasons other than price.
Primarily, the companies
which originally built the
boards used top-quality, fully
spec'ed components. All
chips have already been
tested, and most have already
served in equipment.
Given that you've found a
serendipity of well soldered
chips, it's necessary to
unsolder them without either
burning them or cracking
their cases. Desoldering
individual leads can be done,
but usually the chip is made
unnecessarily hot by the
prolonged application of
heat. Also, pulling each lead
out separately results in bent,
often broken leads. Devices
are available which will heat
all 14 or 16 pins of a small
IC, but again a long time is
needed to melt the solder
since the total amount of
energy available is limited to
a small soldering pencil
heating element. Most
available boards are two sided
and four layer boards aren't
uncommon. Multi-layered
boards make the required
amount of energy even
higher.
When a board is built, the
ICs are positioned in place
with all other components,
and the board is soldered by a
three step process.
1. The underside is washed
by hot, bubbling, liquid flux.
2. The clean board is
passed over a small fountain
of solder, so that the board
just touches it.
3. After cooling, the board
is immersed in FREON gas to
remove any remaining flux.
As you can see, the board
is su b jected to high
temperatures during the
soldering phase, which takes
around 5-10 seconds.
The blow torch method of
IC removal duplicates
conditions during board
soldering by heating all pins
simultaneously; removing the
IC is a single step.
Equipment Needed
To use this technique, you
will need:
A torch. Non-oxygenated
propane and acetylene gas has
been used.
Clamps or a vise to hold
the board fairly rigid during
chip removal.
A way to grip the chips,
depending on how they are
packed next to each other.
Components, small vise grips,
a small screw driver and a fine
point awl should be all that
are needed.
A place where splashed
solder will not be serious.
Some form of eye
protection.
WARNING 1
Using this method involves
heating PC boards to high
temperatures. Some boards
release Hydrogen Chloride
(HCI), which becomes
hydrochloric acid in your
lungs. Do this only in a well
ventilated area, and stop to
allow air to clear if irritation
develops.
20
Crip the IC a second after removing the flame and rock it away from the board. It should come
free in a couple of seconds.
m m
I
>»'»»> MM
■T
W
WARNING 2
When an IC is pulled from
a board, the board often
snaps back to its original
position. This is especially
true if it isn't fixed very
rigidly in place. When the
board flips, solder is often
sprayed away from the back
side of the board. I ruined a
pair of pants by not
considering this before I
started. I, therefore, wear old
clothes and if you don't want
solder on the floor, cover it
with newspapers.
Enough warnings . . .
following is how I pull ICs
from boards:
First I clamp the board to
my bench so that I can get
my vise grips on about half
the ICs (this is with a 10" x
14" board). I adjust the vise
grips so I can grip a 1 4 pin IC
without the vise grips locking
and then light the torch. The
flame on my Benzo-matic
torch with the narrow tip is
about an inch long.
Beginning with the lowest
IC I can reach, I heat it with
the torch by sweeping the
torch over its pins (you
obviously heat the
non-component side).
Especially when using a torch
with a narrow flame it is
necessary to move the flame
over the pins. One complete
sweep should be done once or
twice a second. After a
second or so, the IC should
be gripped, and rocking
tension away from the board
applied. It helps to rock the
IC, especially if corner pins
have been bent over to hold
the IC in place during
assembly. The IC should very
rapidly become loose, and in
another couple of seconds
should come free of the
board.
When the IC is removed,
quickly drop it on the bench
and move the torch and pliers
to the IC above the one
removed. Heating the lower
IC pre- warms the board
above, making the next
removal easier. Also, the
board position just heated
will cool faster, thereby
reducing the amount by
which the board will be
damaged.
As each column of ICs is
removed, the next is done.
When all ICs on one half have
been removed, reposition the
board so the other half is
accessible. I've found that the
half-way point often can be a
good excuse to let the room
ventilate and drink a beer.
No matter how carefully
and rapidly I've worked, I
always burn the board at least
once because I have trouble
removing an IC, or my pliers
slip, or for some other reason.
If you consistently burn each
board position, your flame is
probably too hot. If,
however, it takes longer than
5 to 1 0 seconds to remove an
IC, your flame is too cool.
A certain amount of care
is necessary when gripping
the ICs. Too much pressure
may crack them. Too little
pressure will let the pliers
slip, costing time to
reposition them and marring
the cases.
When attempting to
remove the larger ICs such as
74181s and 74154s, which
come in 24 pin DIPs, I have
trouble gripping them, so I
remove them as a two step
process. First, I place an awl
under the middle of one side,
say between pins 6 and 7. I
heat that pin row and, with
the awl applying leverage,
pull out that row. I then grip
the IC on its thinnest
dimension, heat the
remaining pins, and remove
the IC.
So far, by using this
technique, my friends and I
have removed about 1 000 ICs
from surplus boards which
have about 80-1 00 ICs each. I
tend to break 2% of the chips
I pull by applying too much
force with the pliers. But a
friend has never broken one,
so it clearly is an individual
matter. Of those chips
removed unbroken, we have
tested around 250, and have
never found a bad chip.
As an unrecommended
demonstration of the
ruggedness of ICs, I
accidentally grossly
overheated one, so that when
I gripped it in vise grips, the
chip was bent in a curve. The
plastic case must have
softened significantly. After
allowing it to cool several
minutes to the point where I
could handle it by hand, I
plugged it into a circuit,
expecting it to have failed
totally. It worked, although I
didn't check out its ac
characteristics. Out of general
paranoiac distrust for a device
so intensely mistreated, I
discarded it.
After removing ICs from
boards it is usually necessary
to clean and straighten the
pins. Boards with plated
through holes often lose their
plating around the IC lead.
I have found this method
useful as a means of quickly
building a stock of ICs ready
to use in any project. It is
limited mainly by the
availability of exotic surplus
chips, but most standard
7400 series TTL is easily
available. The price of 4
cents/chip can't be beat, and
the time required — about 10
to 20 minutes/80 chip board
— is rather small.
This technique provides a
fast, cheap, safe means of
removing chips. I hope it
proves as effective for you as
it does for me.
21
SERIAL
We all know
microcomputers use parallel
data for internal operations.
Computers - mini, micro or
maxi - are often specified
with the "bus data width" as
a key parameter. This is the
number of parallel bits which
participate in operations at
one time. Typical
microprocessors now
available have bus data widths
of 4,8,12, or 16 bits. If you
employ a used minicomputer
in your system you may
enjoy a 12,16,18, or 24 or
even 32-bit wide bus. When
shuffling data to or from
memory and peripherals, the
parallel lines of the bus are
defined simultaneously - and
you have to run at least as
many physical wires to each
interfaced subsystem.
When wire is at a premium
you can get by with only one
channel if the data is sent in a
time-ordered sequence, one
bit at a time. Communicat-
ions and peripheral interfaces
thrive on diets of serial bits
provided the speed is
relatively low.
In this article, Don
Lancaster provides us with an
excerpt from his forthcoming
book, TV Typewriter
Cookbook, to be published
by Howard W. Sams,
Indianapolis, Indiana. Don
describes the basics of parallel
to serial conversion and its
inverse, using UART
technology to do the
transformation. His article
this month concerns UARTs
and serial interfaces which are
relatively self-contained -
local wires, tape recorders,
etc. He also covers the
communications aspects of
serial data. ..radio and
telephone network modem
hardware.
While Don wrote the
article from the point of view
of the TV Typewriter
technology which he
pioneered, the problems he
discusses are just as applicable
to the home brew computer
context .. .simply read
"computer" every time you
see TVT in the text. Don's
comments on the serial
cassette interface will provide
one input to the discussion of
various possible recording
interfaces in the pages of
BYTE.
. . . CARL
by
Don Lancaster
Box 1112
Parker AZ 85344
Most TV typewriter
circuits need all their ASCII
character and command bits
simultaneously available in
parallel form. This is also true
of most electronic keyboard
encoders and the
bidirectional data buses of
many minicomputers and
microprocessors. In simple
systems, we can connect all
these parallel sources and
loads together as needed
without any further interface
circuitry.
Sometimes, it's far more
useful or convenient to have
the bits march by one by one
in serial form. While serial
form is much slower, it has
one big advantage — only a
single wire or com-
munications channel is
needed, instead of multiple
signal lines. Another benefit
of serial form is that it can be
made slow enough to
communicate over ordinary
phone lines, cassette tapes,
radio channels, or
electromechanical teletype
systems. Some of the places
where we'd like to use serial
transmission are:
Remote Keyboards, where
a single pair interconnection
gets used instead of expensive
multiple conductor cable.
Teletypes, where the bits
have to be converted to
signals based on current or no
current in a wire loop.
Industry Standard
Interfaces, such as the
RS232-C and the newer
RS422 and GPIB, allowing
signals to travel relatively
long distances.
Cassette Recorders, where
we can store and exchange
characters and programs with
properly designed single
channel, speed independent
circuitry.
Radio Transmission, where
only two tones on a single
transmitted frequency are
often used. This is typical of
ham RTTY.
Modems, or Modulator-
Demodulators that let us
exchange data over the
telephone line, either one
way, or both ways at once.
We can call the circuits
22
INTERFACE
that get us from parallel to
serial and back again serial
interface. Usually, there are
two distinct parts to the
interface problem. The first is
to convert from parallel to
serial (or vice versa) at logic
level, staying compatible with
CMOS or TTL integrated
circuits. This is often done in
an industry standard single
integrated circuit called a
UART, short for Universal
Asynchronous Receiver
Transmitter. UARTs will
simply and cheaply do the
conversion and back again,
along with providing all the
necessary housekeeping bits,
control signals, and noise
immunity provisions.
The second portion of our
conversion process gets us
from logic levels to whatever
form of signal the serial part
of the system uses — such as
dc currents for teletypes,
bipolar signals for standard
interface, and carefully
selected tones suitable for
cassette recording or
transmission over a radio
channel or a phone line. We'll
be taking a detailed look at
most of these techniques
later.
How Fast?
There are two basic types
of serial transmission we can
use, synchronous and
asynchronous.
In synchronous
transmission, all the
characters (called "words")
are locked into system
timing. We know the exact
time position of each piece of
data. If some time is to go by
without doing anything
useful, do-nothing words
called nulls are provided.
Timing signals must somehow
be supplied to each end of a
synchronous serial data
system so we can tell when
each word is to start. This
usually means a separate
timing channel or track or
some sort of elaborate timing
recovery circuit. Synchronous
systems are usually fast and
complex, but they are rarely
used in most TV Typewriter
applications.
With asynch ronous
transmission, the data words
are not locked into system
timing and can arrive with
almost any spacing between
words. To tell the beginning
and end of a word, we have
to add some new bit
groupings, called start and
stop bits, to the data. We
don't have to provide any
other locking signal between
the source and destination of
common Baud rates. The
most popular of these include
110, 300, 600 and 1200 bits
per second. 1200 BPS is
usually the fastest that can be
handled by the phone
company without fully
dedicated lines. Inside
systems, and where special
lines can be provided, faster
synchronous standard Baud
rates of 2400, 4800 and 9600
bits per second may be used.
Should the Baud rate
change between transmission
and reception, such as when
two recorders are used, or the
batteries on one recorder age,
the receiving end of the
system has to be able to
adjust itself to the new
effective Baud rate if errors
are to be avoided.
110 Baud is very popular
for limited speed TV
Serial Uses
Remote keyboards
Teletypes
Cassette recorders
Modems
Fig. 2. Standard serial communications speeds.
BAUD
TELETYPE
DDD PHONE
RATE
TYPE
COMPATIBLE?
COMPATIBLE?
110 BPS
Asynchronous
YES
TWO WAY
300 BPS
Asynchronous
NO
TWO WAY
600 BPS
Asynchronous
NO
ONEWAY
1200 BPS
Asynchronous
NO
ONEWAY
2400 BPS
Synchronous
NO
NO
4800 BPS
Synchronous
NO
NO
9600 BPS
Synchronous
NO
NO
FRAME UPDATE TIME TO LOAD
COMPATIBLE? 512 CHARACTERS
YES 51.2 SECONDS
YES 18.7 SECONDS
MAYBE 9.3 SECONDS
NO 4.6 SECONDS
NO 2.3 SECONDS
NO 1.2 SECONDS
NO 0.6 SECONDS
the data. Asynchronous data
is commonly used in TVT
systems.
Both ends of a serial
transmission system have to
exactly agree on a system
speed, usually called the Baud
Rate. The Baud rate is simply
how many bits per second are
going to be transmitted,
including any start and stop
bits. Fig. 1 shows us some
Typewriter uses. This rate is
compatible with the ASR-33
eight bit Teletype code and
corresponds to a 100 word
per minute typing rate. While
this is the fastest that most
teletypewriter systems can be
driven, and is easily handled
by two-way 103 style phone
modems, it takes painfully
long to fill the screen. Even
with a 512 character screen,
23
THE START BIT IS
ALWAYS A ZERO
THE STOP SIGNAL IS ALWAYS
AT LEAST TWO ONES
— V-
\
(NEXT WORD)
— V
START
BIT
'0"
ASCII
BIT
I
ASCII
BIT
2
ASCII
BIT
3
ASCII
BIT
A
ASCII
BIT
5
ASCII
BIT
G
ASCII
BIT
7
ASCII
PARITY
BIT
STOP
BIT
"I"
STOP
BIT
-9.09mSEC (TYPICAL)
lOOmSEC
"A
START
BIT
"0"
ANY AMOUNT OF
TIME CAN PASS
BETWEEN WORDS
Fig. 2. llOBaud, 100 word per minute code. "0" is a space or an open line. "1" is a mark or a shorted line.
UART = Universal
Asynchronous Receiver
Transmitter
RTTY =
Teletype
Radio
TVT = Television
Typewriter
it takes 51 .2 seconds, or
almost a minute to load or
retransmit the screen.
300 Baud is equal to 30
characters per second or 300
words per minute. This rate is
the fastest normally used by a
two frame update cursor
system. It is also a rate easily
handled by a cassette
recorder, and by many
two-way or full duplex
modem systems. About 18.6
seconds are needed to load or
dump a 512 character screen.
These frame update and
retransmission rates can be
minimized by using a
"virtual" update where one
page is viewed while the other
is updated, and by creative
use of carriage return
commands to return after the
last character of each line,
rather than going on out to
the end of the line.
Faster Baud rates usually
take more in the way of
circuit design, and are usually
limited to one-way modem
transmission, premium
recording techniques, and a
Direct Memory Access type
of update in the TV
Typewriter.
A 110 Baud Standard
The 110 Baud, 100 word
per minute code is an
industry standard for slow
data e xc hange. 1 1 is
compatible with the Model
33 and Model 35 Teletype
systems, and other
teleprinters using an 8 level
code. The code takes 100
milliseconds to send a
character. The next character
can follow immediately or
can be sent any time later.
Fig. 2 shows us the standard.
The original Teletype
notation still carries over to
this code. A Mark is a digital
"1", a shorted line, or a
completed connection. A
Space is a digital "0", an
open line or a broken
connection. Between words,
the teletype line or digital
output is constantly putting
out "1"s or marks, and is
thus marking time. One of
the reasons this was originally
done was so that any break in
communications is
immediately known.
There are eleven bits to
the code. Each bit is an
identical 9.09 milliseconds
long for a total code time of
100 milliseconds per word.
Each word begins with a start
bit. The start bit is always a
zero and tells the receiving
circuitry that a new character
is to begin. The start bit is
essential since some ASCII
words will begin with one or
more "1 "s and there is no
way to tell a marking time
"1" from a "1" bit in an
ASCII character code.
The ASCII bits follow in
sequential order, starting with
bit B1 or the least significant
bit. After the seven character
bits, an eighth bit is sent
either as a "1 " or providing a
parity check bit for the rest
of the word. At least two
stop bits must follow the
word. The stop bits are "1"s
or marks, and any number of
additional marking "1"s can
follow between characters.
The stop bits give the
receiving circuitry a chance to
shut itself down and await a
new word.
The receiver can be
electronic in the case of a
UART or electromechanical
in the case of a teletype.
Between words, the receiver
just waits. Since the data
transmission is asynchronous,
the receiver has no way of
knowing ahead of time when
a new word is to arrive, so it
has to wait for a new start bit
before it can do anything.
The arrival of this bit
activates the receiver, which "
then goes through a
sequential procedure that
sorts out the bits, puts them
in parallel form, and outputs
them.
With a UART, sequential
time intervals of 9.09
milliseconds each are
electronically generated and
the center of each interval
window is tested against the
incoming code to see whether
a "1" or a "0" is received.
These are accumulated in a
shift register, error tested,
and output as a parallel word
at the end of the interval. The
stop bits are used to reset and
shut off the circuitry.
With an electromechanical
teletype, the break in line
current caused by the stop bit
releases a one-turn clutch on
a mechanical scanning
commutator that goes once
around in 100 milliseconds. It
sequentially routes the
incoming code to a group of
scanning solenoid magnets.
These set up the code in
parallel form, and at the end
of the word, the scanner
resets and the code is typed
or output on paper tape.
Tolerances
It's extremely important
that both the transmitter and
receiver are clocking bits out
at the same 9.09 millisecond
rate, and that nothing
happens in the channel to
speed up or slow down the
bits. There are many possible
sources of error. If the bit
24
positions jitter around or are
differentially delayed to by
any tone keying, the filtering,
or channel response, we get a
bias error. Bias errors put
individual bits ahead of or
behind where they actually
belong. One source of bias in
a two tone modem or cassette
system occurs when one tone
is delayed more than the
other in any filtering circuit.
This is called the group delay
distortion problem.
If the basic transmission
and reception rates differ so
that the bits can get ahead of
or behind where they're
supposed to be, we have a
skew error. Note that bias
errors apply to individual
bits, while skew errors are
progressive, making each
sequential bit decision that
much more difficult to detect
without error. We get a skew
error if there is an absolute
timing difference between
transmitter and receiver.
Cassette recording systems
introduce a potential skew
error if the record and
playback rates differ. This
easily happens with cheaper
units susceptible to speed
variations with battery
voltage, and almost is
inevitable if the recording is
done on one machine and
playback on a second.
Recording skew errors are
correctable if the recording
signals are designed to include
speed information, and the
receiver is capable of using
this information to speed up
or slow down as needed to
eliminate this error source.
How accurate do we have
to be? This is easy to
calculate. Assume
temporarily that there are
zero jitter and zero bias errors
in the channel, and that we
are using an electronic
receiver that very narrowly
samples for valid data. The
last data bit we are interested
in is the parity bit. The center
of the parity bit is 8Vt bits
removed from the beginning
of the start bit, a delay of
77.26 milliseconds. The
receiver delay is also
supposed to be 77.26
milliseconds. If our sampling
is narrow enough, we can be
up to just under half a bit
slow or fast and still be able
to read the parity bit without
error. This corresponds to a
time error of 4.53
milliseconds either way, or
slightly over 5%.
But, this figure leaves no
room for bias and jitter errors
and doesn't give the slower
electromechanical circuits
enough time width to reliably
respond to the incoming data.
As a practical rule, the
receiver and transmitter bit
times must match to well
within plus or minus one
percent. It is absolutely
essential to hold things this
close for low-error
communications.
A 300 Baud asynchronous
timing system is very similar
to Fig. 2 and uses the same
eleven bit code of equally
spaced bits. The only
difference is that the per-bit
time is 3.33 milliseconds,
corresponding to a 300 Hertz
clock rate. Optionally, only a
single stop bit may be used.
This rate is cassette and TV
Typewriter compatible and
may be used for full duplex
(two way) operation in most
modem circuits, but it is too
fast for teletype use.
Using UARTs
Parallel to serial
conversion and back again
can obviously be done with
CMOS or TTL circuits.
Basically, you parallel load a
shift register and serially
clock out data or serially
clock in data to a shift
register and then latch its
parallel outputs when the
data is valid. By the time you
add all the error testing
circuitry, housekeeping bits,
synchronization, and so on,
the circuits tend to get
specialized and complex.
Instead of this route, you
can use an industry standard
MOS integrated circuit called
a UART for virtually any
serial to parallel conversion
and return process. Several
pin compatible UARTs
appear in Fig. 3. These are
general purpose,
programmable devices that let
you select the number of
start and stop bits, the word
length, type of parity, and so
on to suit your particular
system. Dedicated UART-like
devices are also available for
use with specific
microprocessors. The Intel
8201 and the Motorola 6850
are typical of these.
The standard UART
comes in a 40 pin package,
and has supply voltages of +5
routed to pin #1, -12 to pin
#2, and ground to pin #3.
The later versions of these
devices are N channel types
that need no -12 supply, and
Fig. 3. Pin compatible UARTS.
S1883 (American Microsystems)
AY-5-1 01 2 (General Instruments)
2536 (Signetics)
COM2502 (Standard Microsystems)
TMS6012 (Texas Instruments)
TR1602 (Western Digital)
that pin is left unconnected.
The General Instruments
AY-5-1 01 4 is one of these.
The low number pins
(1-20) are the receive portion
of the UART, while the high
number pins (21-40) are the
transmit portion. Except for
common word length and
parity programming, the two
halves of the circuit are
separate, although they often
are used as a send-receive
pair.
Both the receiver and
transmitter portions of the
circuit need a clock. The
clock frequency is usually
sixteen times the Baud rate.
This high frequency lets the
UART do things like sample
the center of each data
interval and recheck for valid
start signals and similar good
things. For instance, a 110
25
Fig. 4. V ART circuit to transmit code of Fig. 2.
I6X
CLOCK
INPUT O-
1760 Hz
(NO BAUD)
4800Hz
(300BAUD)
ASCII PARALLEL INPUT
MSB 6 5 4 3 2 LSB
o o o o o o g
KP
SEND
SI
TOP
VIEW
+ 3 -12
RECEIVER
CONNECTION
Baud circuit needs a clock of
1760 Hertz, while a 300 Baud
one uses a 4800 Hertz clock
and so on.
The clock signals can be
derived from a CMOS or 555
type of astable oscillator, but
it is far better to digitally
derive clock frequencies from
TVT system timing or
another stable source.
Remember these clock signals
must be held to well within
one percent and ideally
shouldn't have any
adjustments. If our TVT has a
15,840 horizontal rate, we
can divide this by nine to
exactly get 1760 for a 110
Baud system. With a 15,720
rate, we get 1746.6 Hertz, a
figure a bit low, but still
useful and less than one
percent under.
The receiver and
transmitter clock inputs are
on separate pins. They are
often tied to a common clock
source in simple send-receive
circuits. One important
exception is when a UART is
used as part of a
speed-independent cassette
interface. In this case, the
receiver clock frequency is
derived from the tape during
playback. While it is
nominally the same as the
transmitter frequency, its
exact value is set by speed
information recovered from
the recorder. This can be used
to eliminate much of the
skew error that would
normally result from a change
in tape speed from time to
time or machine to machine.
Fig. 4 shows us the
connections for transmission
of the 1 1 unit code of Fig. 2.
The input ASCII code goes
on pins 26 through 33, with
the least significant or b1 bit
on pin 26. A 16X clock goes
into pin 40, and a KP send
command goes to pin 23. The
leading edge of this send
command starts transmission,
but the input data must be
valid for the entire time the
command is positive.
Normally, this is a narrow
pulse a few milliseconds wide,
derived from a keypressed
command on a keyboard.
Serial output data appears on
pin 25.
Pins 34-39 program the
UART for different bit
lengths and codes. 34 is an
enable that normally remains
high. Pin 35 provides a parity
bit if it is grounded and omits
one if it is high. Pin 36 picks
the number of stop bits.
Ground gives you one and
high gives you two. 37 and 38
together decide how many
data bits are to be sent,
ranging from 5 to 8. Both
grounded provide for 5 data
bits, useful for Baudot RTTY
transmission. The connection
shown gives us a seven bit
data word. Note that if you
use the parity bit, it adds to
the number of data words.
The code of Fig. 2 uses our
start bit, seven data bits, one
parity bit, and one stop bit
for an eleven unit code. Pin
39 picks even or odd parity
with ground giving odd
parity. An optional reset
input is provided on pin 21.
It is normally grounded.
Bringing it high resets the
UART. Without resetting, the
first word transmitted after
power is first applied can be
wrong.
The UART transmitter is
double buffered. This means
you can load a new character
as soon as the one already
inside begins its transmission.
Two optional outputs are
provided. Pin 22 tells you
when it is OK to provide a
new character by going high.
Pin 24 tells you that a
character has been
completely sent when it goes
high.
There are two ways you
can use a UART transmitter,
either unconditionally or
handshaking. In the
unconditional mode, any
time a character arrives, it
gets sent. This is the simplest,
but you have to make
absolutely certain that
characters don't arrive spaced
or grouped too closely
together. While pairs of
inputs can be closely spaced
much the same way that two
key rollover works in a
keyboard, you have to be
absolutely certain that the
long term average is never
exceeded by the word rate of
the UART. This means a 100
millisecond character spacing
for 110 Baud, and around
one third that for a 300 Baud
system. In the handshaking
mode, the UART decides
when it wants to receive a
new character, using the pin
22 and 24 outputs. Circuits
driving the UART are set up
to provide characters only
when they are asked for
them. For most TVT uses,
unconditional UART
transmission is simpler and
easier to use.
28
Fig. 5 shows us the UART
receiver circuit, again set up
for the code of Fig. 2. The
receiver logic has elaborate
noise elimination provisions,
made possible by the sixteen
times higher clock frequency.
Whenever a start bit is
purportedly received, that bit
is retested later and verified
to prevent a random noise
pulse from generating an
unwanted character output.
All data bits are narrowly
sampled in the middle of
their possible time slots,
allowing considerable bias
and skew distortion to exist
without error.
The same pin 34-39 inputs
that programmed the
transmitter's word length and
format identically program
Baud rate, applied to pin 17.
In send-receive systems, we
can often tie the receiver and
transmitter clocks together.
In speed-independent cassette
interface circuits, the receive
clock is reconstructed from
speed information recovered
from the recorder to
eliminate skew errors.
The serial input is routed
to pin 20 and converted to
the equivalent seven bit
parallel ASCII output on pins
6 through 12, with the least
significant bit on pin 12.
When the output is valid, a
strobe on pin 19 goes high as
an output.
This output strobe must
be reset before a new
character can be output. If
we're operating in a
invert it, and reapply it to the
strobe reset input pin 18. Fig.
5 shows us one way to do this
with a RC network and a
CMOS inverter. Many UART
receiver problems are caused
by failing to reset the strobe
after each character — watch
this particular detail very
closely.
Several additional outputs
are available for use in fancier
systems. Parity, framing, and
overrun errors produce
respective high outputs on
pins 13 through 15. These
can be used to ask for a
repeat or put in a question
mark to indicate a
transmission error. All
receiver UART outputs are
tri-state and may be floated
in systems where the UART's
Fig. 5. UART circuit to receive code of Fig. 2. Parity, word length, and stop bits set by transmitter
programming, pins 34-39.
ADDITIONAL CIRCUIT
NEEDED FOR
UNCONDITIONAL OUTPUT
IN9I4
(19) ■ w»-
I00K
TRANSMITTER
CONNECTIONS
.01
4049
(CMOS)
I6X CLOCK
1760 Hz (110 BAUD)
4800 Hz (300 BAUD)
6 6 6 6 6 6 6
MSB 6 5 4 3 2 LSB
ASCII PARALLEL OUTPUT
IS
JL
NEXT
CHARACTER
ENABLE
CHARACTER
RECEIVED
the receiver portion of the
UART. Although the receiver
and transmitter can be used
in totally different circuits
and at different baud rates,
they have to operate with a
common format, set by these
pins.
The receiver needs its own
clock of sixteen times its
handshaking mode, the TVT
circuitry accepting the
character sends back an
acknowledgement or
completion signal that
momentarily drives pin 18
low. If we are using an
unconditional output mode,
you somehow have to delay
the pin 19 strobe output,
outputs must share a
common or a bidirectional
data buss. Making pin 4
positive disables the ASCII
outputs, while making pin 16
positive disables the error
outputs.
Besides its usual use as a
two way serial to parallel
converter, there are other
27
useful circuit tricks you can
do with a UART. For
instance, by connecting the
parallel outputs of the
receiver back to the parallel
inputs of the transmitter, you
can change Baud rates. This is
handy in speeding up slow
data for use on a fast channel,
and for correcting speed
errors on cassette systems.
If the UART is to accept
data from several sources
you can either tri-state
combine the sources onto a
single input buss, or else use
an input eight pole, double
throw selector switch to pick
one of two input channels.
This is common in TVT
service, where the keyboard
forms one channel and the
screen retransmission output
buss forms the other. 4502
hex tri-state drivers or 4019
four pole selectors are
suitable CMOS devices to use.
In general, tri-state lines onto
a common buss are much
preferable to selectors, but
few keyboard encoders have
inherent tri-state output, and
the output buss on the TVT
often has to continously drive
the display if we want to view
the retransmission process.
Teletype Interface
There are two common
types of teletype systems in
use today. The older type is
the five code bit machine,
typical examples of which are
the Teletype model 28, the
Creed model 75, and various
Kleinschmidt models. While
these machines are com-
mercially obsolete, they
still see usage for ham RTTY
and some deaf communi-
cations systems. Their
reasonable price availability
makes them attractive for
home computer hard copy as
well, although the available
character presentation is
extremely limited. These
older machines all use the
more or less obsolete Baudot
code and are not directly
ASCII and TVT compatible,
unless conversion ROMs and
figures-letters logic is added
to them. We'll note in passing
that a UART may be used in
the Baudot code by applying
the code to pins 26-30 with
the least significant bit on pin
26, and making pin 35 high
and grounding pins 37 and
38. Older UARTs will
generate two stop bits, while
more recent ones (such as the
TR1602B) will automatically
generate the needed 1 .42 stop
bits in this mode.
The second common type
of machine is the computer
and timesharing standard
teletype — the Teletype
models 33 and 35,
particularly the ASR-33.
Reception reverses the
process. A momentary break
representing the start bit
releases a once-around
commutator that distributes
the code breaks to magnets
which set up a pattern for
printing when the scan is
complete.
Fig. 6 shows us the
interface for a Model 33
teletype. For optimum use,
the teletype is internally
programmed to a 20
milliampere current loop and
full duplex operation. This is
done following the teletype's
maintenance manual. Full
duplex operation means that
the keyboard and printer
from the UART is read as a
"1" by the teletype. Be sure
to observe the line polarities
shown. The transistors can be
almost any medium power,
reasonable gain devices. More
information on teletype
interface appears in the Intel
MCS-8 Users Manual.
Similar current-no current
interface loops can be used
with older teletype systems.
However, some of these
machines need substantially
higher currents and are
notorious as transient and
ground noise generators. With
these older machines, total
isolation is strongly
recommended, using small,
Fig. 6. UART-teletype (ASR-33) interface. Teletype must be internally
set to 20 mA loop current and full duplex operation.
PWR SND
RCV
ASR-33
OUTPUT
TERMINALS
-0 + 5
+ 5o
DATA
TOTTY
FROM UART
2N2222
4049
(CMOS)
-12
These use a standard eight bit
ASCII code and follow the
format of Fig. 2. They are
directly compatible with TVT
system coding.
Either type of system is
based on breaking current in
a dc loop. This current is
often either 20 or 60
milliamperes. Transmission
occurs when a mechanically
coded commutator generates
an output code by
once-around breaking the
current as often as needed.
aren't connected to each
other. The keyboard can send
and the printer receive both
at the same time.
The transmitter interface
provides a 20 milliampere
current for a mark or a one
and an open circuit for a
space or a zero. The receiver
senses a closed contact for a
mark or a one and an open
contact for a space or a zero.
Extra inverters are added as
shown to make the codes
correspond so that a "1"
DATA FROM
TTY TO
UART
high speed reed relays or else
opto-isolator circuits.
With any teletype system,
the transmit Baud rate of the
UART must match the needs
of the teletype to within one
percent. In the case of the
ASR-33, a 110 Baud rate is
needed, resulting in a 16X
UART clock of 1760 Hertz.
Industrial Interface
There are presently quite a
few "standard" interfaces
used to get between
28
Fig. 7. Industrial interfaces for cable interconnections.
(NATIONAL)
1/4 LM I486
(NATIONAL)
I/4LMI489
WW"//'*-''
^-3V
+ 3V ' ' rt-
■fc
ST"
1/4 LM 1489
fa) RS232-C
ENABLE
^
400pF
I/4LMMB8
ENABLE
H2mA
///////// l/2 75108
'//////// 0mA (TEX. INST)
2 ,2mA 'N=££=
IT /• M BALANCED L n.
(■
1/2 75108
(TEX. INST)
EN
IN
(b) RS422
y////////.z
2.4V E%BLETJ3>
8V
OV
LINE
J
I/4MC3440
(MOTOROLA)
(C) GPIB
0'»"
■ J*
1/4 MC3440
(MOTOROLA)
commercial modems,
printers, test equipment,
computers, and anywhere else
you need a reasonable
distance, noise free interface.
Three of the most common
include the RS232, the
RS422, and the General
Purpose Interface Buss or
GPIB. Fig. 7 shows us what's
involved in the way of signal
levels and inter face
techniques.
RS232-C is an old EIA
standard that predates IC
techniques and is somewhat
unwieldy. It is widely used in
commercial modem circuits
and for most large scale
computer serial interface. The
signal is bipolar, with a logic
"1" being defined as +3 to +9
volts or more and a logic "0"
being defined as -3 to -9 volts
or more. Capacitors on the
drivers limit risetimes to 30
volts per microsecond or less
to minimize ringing and
transient effects. Capacitors
on the receivers limit the
response as needed to reject
noise but pass the highest
transmitted Baud rate. The
1488 and 1489 integrated
circuits form a typical
interface pair.
RS422 is a newer EIA
standard that uses balanced
transmission lines and
differential current sensing to
eliminate any common mode
noise. A current, typically of
6 to 12 milliamperes in one
direction, defines a "1",
while the reversed current
defines a "0". The balanced
line may be used either single
direction or bidirectional,
depending on how the
receiver enables are used. In
any bidirectional or party line
system, it's extremely
important to enable only one
driver at a time. The 75108
and 75109 are typical
balanced line drivers and
receivers.
The General Purpose
Interface Buss or GPIB uses
TTL compatible levels, but
combines them with a
terminated line, high drive
capability, and receivers with
hysteresis for good noise
immunity. The GPIB is most
often used in parallel form to
interface test and measuring
equipment with computers
and calculators. It can also be
used as an effective serial
interface that takes no special
power supplies. The 3440 is a
quad bus transceiver useful
for GPIB service.
More information on EIA
standards are available from
the Electronic Industries
Association, 2001 Eye St.
NW, Washington DC 20006,
while information on the
GPIB interface is available
from Hewlett Packard, 1501
Page Mill Rd., Palo Alto CA
94304.
Cassette Interface
Magnetic storage in the
form of tape drive, disc files,
and floppy discs have long
been a standard and
expensive way of storing bulk
serial data for computer use.
An obvious and extremely
low cost substitute for these
would seem to be the
ordinary audio cassette
recorder. Besides providing
bulk storage, the cassette can
replace paper tape and
punched cards, and handle
programs as well. One big
advantage of cassettes is
potentially low cost
duplication and distribution
and exchange of programs.
Cassette recorders present
several serious design
problems when used for
storage of digital data. Even a
quality machine will vary its
speed by a percent or more,
and the machine to machine
variations, particularly on
lower cost units, can far
exceed the amount of skew
29
Fig. 8 Speed independent cassette standards.
110 BAUD (CODE PER FIG. 2)
ARK = 1 = 16 CYCLES OF 1760 HZ
SPACE = 0 = 8 CYCLES OF 880 HZ
300 BAUD (FIG. 2 CODE WITH 300 HZ BIT RATE)
MARK = 1 = 16 CYCLES OF 4800 HZ
SPACE = 0 = 8 CYCLES OF 2400 HZ
600 BAUD (FIG. 2 CODE WITH 600 HZ BIT RATE)
MARK = 1=8 CYCLES OF 4800 HZ
SPACE = 0 = 4 CYCLES OF 2400 HZ
(clock doubling required)
distortion the code of Fig. 2
can stand — if the receiver
UART is running at a
constant clock rate. Some of
the techniques used to send
data over modems and radio
channels will work with a
single, quality recorder, but
these circuits are far from
optimum as they have no way
to compensate for recorder
speed variations. Similarly,
many of the standard
computer tape recording
techniques may work, but
they are based on a different
type of recording head and
system — one that works with
pulses, saturated flux
changes, and sense amplifers,
rather than one that records
and plays back sine waves
more or less linearly.
An ideal cassette interface
would handle any machine
and provide for machine to
machine variations. We'd also
like to supply some
protection against dropouts,
perhaps in the form of
integration or multiple voting
on what constitutes a one or
a zero. A low cost, simple
system using a single supply
voltage and a minimum
number of non-critical
adjustments is obviously
desirable, particularly if the
system can be very tolerant
of recorder levels and
settings, and need no exotic
codings, preambles or other
limitations.
We can base such a speed
variation tolerant or "speed
independent" system on a
unique property of the
UART. For every received
one or zero bit, the UART
needs exactly sixteen receiver
clock pulses. By designing a
standard so that sixteen
cycles of clock are recovered
from a one recorded on the
tape, and sixteen cycles of
clock are recovered from a
zero on the tape, the UART
will always receive just the
exact number of clock pulses
it needs per one or zero. Tape
speed variations of plus and
minus 30 percent or more
should be possible.
Fig. 9. Speed independent cassette interface. Values shown for 300 Baud rate. Recorder speed may vary
±30%.
(a) Record circuit.
DATA
FROM
UART O-
TRANSMITTER
+ 5 o-
400I
(CMOS)
LOW=tI
HIGH=v2
O^O
33K
-vw-
UART
TRANSMITTER O
CLOCK
(MUST HAVE REASONABLE
DUTY CYCLE)
.001
TO
RECORDER
'AUX? INPUT
o
(b) Playback circuit.
.022
FROM
RECORDER ■*""■ |0K
"EAR" O j\ wv
OUTPUT
IN9I4
f RECEIVE CLOCK
TO UART
RECEIVE DATA
°TO UART
0,+5 SUPPLY
30
Fig. 8 shows us a set of
standards for speed
independent cassette
interface. All three standards
are based on the code and bit
timing of Fig. 2. A 110 Baud
standard records 1 6 cycles of
1760 Hertz for a one and
eight cycles of 880 Hertz for
a zero. The 300 Baud version,
which is recommended for
most uses, records 1 6 cycles
of 4800 Hertz for a "1 " and
8 cycles of 2400 Hertz for a
zero. A 600 Baud version can
be based on the 300 Baud
standard by halving the
length and doubling the clock
recovery.
Fig. 9 shows us the 300
Baud circuitry involved, along
with the key waveforms of
Fig. 10. Even including the
$5 to $10 cost of the UART
(usable elsewhere in the TVT
anyway), the circuit is
extremely simple, non-
critical, and cheap.
Fig. 9A shows the record
circuit. As usual, a UART
transmit clock of 1 6 times
the Baud rate must be
provided. For recorder use,
the duty cycle of this clock
must be stable and nearly
50%. Note that the UART
serial data will always change
synchronously with the
UART clock, after a brief
propagation delay. Clock and
Data from the UART
transmitter are sent to a gate
and flip flop that divides the
clock by two if the data is a
zero and divides by one if the
data is a one. This is done by
resetting the flip flop about
half way through a clock
cycle if the data is a "1". We
get sixteen clock frequency
cycles with a "1" and eight
half clock frequency cycles
with a "0". Since the inputs
are synchronized, there are
no transient problems, and all
cycles are full length. This
output is 10:1 attenuated and
moderately filtered to round
the rise and fall times. This
prevents excess peaking of
the high frequency
compensation inside the
recorder. The output is
capacitively coupled to the
recorder AUX input.
The receiver gets its signal
from the recorder EAR
output. This signal is high
pass filtered and doubly
limited, first by a pair of
diodes and then by a CMOS
op amp. This particular op
amp lets you run the inputs
at the same voltage as the
"negative" supply. If you use
a standard op amp here,
you'll need either a negative
supply or positive input bias.
nothing for each one. The
leading edges of these outputs
are sensed and shortened to
25 microseconds, and then
combined with the input 25
microsecond pulses. The
result is 16 clock pulses
routed to the UART receive
clock — either sixteen from
the data for a one, or eight
from the data and eight from
the monostable for a zero.
The monostable's output
also goes to a flip flop to
recover the data. We get a
Fig. 10. Key waveforms of speed independent cassette interface.
LilMnJlMJ^^
(A) RECORDED a RECOVERED SIGNAL
+5
O
25/iSEC PULSES
(B) MONOSTABLE TRIGGER
(C) MONOSTABLE OUTPUT
(D) RECOVERED DATA
UTRrLnjTrLru-
^ p
O
+ 5
O
I "
(E) DELAYED 8 INTEGRATED DATA
(F) RECOVERED CLOCK
A CMOS gate following the
op amp improves the rise and
fall time.
The gate's output is
shortened and generates a
pulse that lasts for 25
microseconds or so, coin-
cident with the positive edge
of the transmitter clock. This
trips a negative recovery
monostable set to two thirds
the period of the lower
frequency clock. If a string of
"1 "s is received, the
monostable keeps on being
retriggered and never drops
its output. If a string of "0"s
is received, the monostable
drops its output for the final
one third of each cycle. The
net result is that you get a
train of 8 negative going
pulses out for each zero and
MM -H -H 4 1 M Vi 4\
^— EFFECT OF SPEED VARIATION
+ 5
- O
-+3
"1" out of the first flip flop
whenever 1 6 cycles of high
frequency data are received
and a zero whenever 8 cycles
of low frequency data are
received. The second flip flop
integrates the output of the
first one to eliminate any
noise pulses and to take an
average of several sequential
ones or zeros before
providing an output.
As the tape speeds up or
slows down, the input square
waves will also speed up or
slow down. The monostable's
output can absorb almost a
33 percent increase (from
half to 2/3) of the high
frequency clock period, or a
33 percent decrease (from 1
to 2/3) of the low frequency
clock period without error.
31
Oddly enough, though
the circuit will work
with poor quality
recorders, the tape
quality should be good
— bad tape means bad
data.
The spacing of alternate zero
clock pulses to the UART
will change as the speed
changes - but the UART
doesn't care about this so
long as the clock pulses don't
actually overlap. This jitter is
automatically eliminated by
circuits inside the UART.
You calibrate the system
by inputting a string of "1"s
and noting the pot position
where errors first happen.
You then input a string of
zeros and note the pot
position where errors first
happen. Then you set the pot
one third of the distance
from the limiting one to the
limiting zero settings. This is
a non-critical adjustment. The
symmetry control can
optionally be adjusted with a
scope, or else by inputting
alternate ones and zeros and
adjusting for one half the
supply voltage (as read on a
meter) at the UART receiver
data output.
There is one little detail
that must be checked. The
positive edge of the UART
transmit clock must be the
same edge that, when
received, is tripping the
negative recovery
monostable. If it isn't, you
may get partial pulses instead
of a nice uniform eight pulse
train during a zero. Recorders
may vary in their internal
circuitry and may provide a
phase inversion between
input and output. If you have
this problem, either use the Q
output of the recorder flip
flop, or interchange the
connections on pins 2 and 3
of the receiver li miter. Once
set for a given recorder, there
should be no further
problems along this line.
While the circuit seems to
work with amazingly poor
recorders, best operation is
gotten with a clean, medium
to better grade recorder,
preferably one that has an
automatic level control on
the input and tone controls
available, along with an AUX
input and an EAR output.
Best operation will normally
result with the output volume
control about half way up
and the tone control set to
maximum treble boost.
A very important point
that's often overlooked is the
tape quality. Bad tape means
bad data. Use only fine grain
premium tapes (Radio Shack
Supertape is typical). The key
thing to watch for is whether
the amplitude variation is
guaranteed to less than one
decibel. If the variation isn't
specified — don't use the
tape. The cost difference
between good and cheap tape
is negligible. You should also
always "certify" your tape
before you use it by writing a
repetitive and obvious pattern
over the entire tape length
and checking for errors,
splices or dropouts.
Extra controls to start and
stop the recorder can
optionally be added to make
the storage more efficient.
Data should never be entered
or removed until the recorder
is up to speed, and the
UART's output lines can be
gated to prevent garbage from
getting into the system.
Formatting data by setting it
up on the TVT screen and
then using a screen read to
load the tape will give you
dense storage.
One final detail that may
need watching is to make sure
the cassette recorder can't
overspeed the system if you
happen to record on a slow
machine and playback on a
fast one. This could output
characters faster than can be
accepted by a teletype or a
TVT frame update system.
The way around this problem
is to set some maximum
possible character rate that
will let the return characters
speed up without problems —
use of a 7.5 Hertz rate on a
110 Baud system or a 22.5
Hertz rate on a 300 Baud
system is one example. A
second potential solution is
to use two separate UARTs —
programming the transmitter
for two stop bits and the
receiver for only one. When
going from a cassette to a
teletype, data can be
resynchronized by connecting
the UART parallel receiver
outputs to the UART parallel
transmitter inputs. Once
again, make sure you can't
overspeed the system.
Radio Data Links
One of the more common
methods of sending serial
digital data over a radio
channel is to use a two
frequency frequency shift
keyer method in which one
frequency represents a digital
one and the other a digital
zero.
Ham RTTY provides us
with a typical example. At
the audio baseband, two
tones are used, defined as
2125 Hertz for a mark, or
one, and 2925 Hertz for a
zero or space. These tones
represent the fifth and
seventh harmonic of 425
Hertz.
These tones may be
digitally generated the same
way the modem tones of the
next section are produced, or
may be generated by a
voltage controlled oscillator
such as a 555, 8038 or a 566.
These frequency shifted tones
are used to frequency
modulate an rf carrier.
Alternately, the carrier itself
can remain at its normal
frequency for a mark and can
be shifted down 850 Hertz
(the difference between 2125
and 2925) for a zero, with
the audio differences being
picked up by mistuning the
receiver by 2125 Hertz.
Fig. 1 1 shows us a typical
receiver demodulator circuit.
The carrier is received and
detected by a FM receiver,
adjusted to output audio
tones of 2125 and 2925
Hertz. These tones are limited
and routed to two bandpass
filters, one set to the upper
and one set to the lower
frequency. Outputs are
amplitude detected and
compared, resulting in a one
out for a frequency of 21 25
and a zero for 2925. This
32
output may be routed to a
UART for serial to parallel
conversion. Normally a 7.42
unit code of 60 or 1 00 words
per minute, using Baudot
encoding, is used for ham
RTTY.
Any radio carrier system
must follow the rules and
regulations for the particular
frequencies used. Best
performance of a frequency
shifted keyed system
normally results when the
generated frequencies are
sinewaves and are switched,
transient free, at their zero
crossings. Receiver filters
should delay both sets of
frequencies identically to
prevent ones from getting
ahead of zeros or vice versa,
and thus creating times when
neither a one or a zero, or
both of them together are
simultaneously present. As
with any serial interface,
input and output code
formats and Baud rates must
closely agree.
Modems
Modems, or modulator-
demodulators, are ways to get
tones or tone groups onto the
telephone line and off again
in order to send and receive
digital data. Two common
ways of coupling modems to
the phone line are to use
small speakers to acoustically
couple to a standard handset,
or to directly connect to the
phone line through a suitable
protective network or data
access arrangement.
Acoustical coupling can be
used anywhere on an
unmodified telephone, but
has problems with frequency
response, microphonics, and
second harmonic distortion
caused by the carbon
transmitter. Direct coupling
gives better control and
better performance, but has
to meet certain telephone
company regulations and
interconnect restrictions,
needs a physical connection
to the phone line, and needs
its own hybrid or means of
separating transmitted and
received data.
There are several basic
ways to use modems. Simplex
transmission goes one way
only. Simplex with a back
channel goes one way only,
but provides for some low
systems that are useful over
ordinary telephone lines,
based on the Bell 103, 202
and 400 series systems. You
can rent these from the
phone company or others,
buy them outright from
modem firms, or design your
own with the guidelines of
this chapter. Most of the
commercial modems use
RS232-C interface standards
and include such logic and
Fig. 1 1. Audio processor for RTTY receiver.
2125Hz ■ MARK'I
2925 Hz = SPACE =0
AUDIO
INPUT FROM
FM RECEIVER
<?
IOK
4558 OR OTHER niriTAI
PREMIUM 741" OP AMPS OUTPUT
3= I
o
frequency communications,
often limited to 4 Baud or
less, in the other direction.
This can provide for
handshaking, message
acknowledgement, etc...,
but is far too slow to return
data. Half duplex systems can
send or receive data, but not
simultaneously. Either the
transmitter is off or in a mark
condition while data is being
received, or the receiver is
disabled while data is being
sent. In full duplex systems,
data can be sent both ways,
independently, and at the
same time.
There are at least three
basic types of modem
switching functions as
automatic answer and
hangup, carrier detect, and
other housekeeping signals.
The 400 systems are based
on the touch tone ringing
frequencies and accept
contacts as inputs and are
limited in the number of
characters and the Baud rate.
Baud rates of 10 to 20
characters per second are
usually the maximum, and
operation is normally
simplex, with a separate unit
needed for transmission and
reception.
The 202 systems are
half-duplex modems that can
run up to 1 200 Baud over the
33
phone line, but cannot
simultaneously communicate
in both directions unless a
special four wire system is
used.
The 103 modems are full
duplex and may be used at
110 and 300 Baud rates. For
the majority of TVT uses,
Fig. 12. Telephone schematic.
MAGNETIC
RECEIVER
this series, run at either Baud
rate, is the most practical.
Unlike the other serial
interface circuits of this
article, proper design of a
good 1 03 style modem circuit
with reasonable noise
performance is a major job,
particularly if your circuit has
to operate over the dial up
network for long distances
and is to reliably
communicate with
commercial modems on the
other end.
Phone Characteristics
A simplified schematic of
a standard 500 telephone set
is shown in Fig. 1 2. A carbon
variable resistance transmitter
and a magnetic headphone-
style receiver are connected
to the line by way of a
duplex coil, a normally closed
dial contact, and a pair of
open when unused
hookswitch contacts.
The duplex coil makes
sure that outgoing signals
reach the line and that
ingoing signals reach the
receiver with a minimum of
interference. This is done by
having two transmitter
windings induce nearly equal
and opposite signals into the
receiver windings. This
effectively cancels much of
the local transmitter's signal
into the receiver. The net
result is to keep transmitter
energy from being wasted in
its own receiver and
minimizes a "hear yourself"
sidetone that psychologically
makes people speak much
more quietly. The duplex coil
attenuates the transmitted
signal by four decibels (to
60% voltage), the received
signal by two decibels (to
80% voltage), and the
sidetone by seventeen
decibels (to 14% voltage).
The line is powered by a
48 volt central office battery
supply, and the ac impedance
of the line is nominally 600
Ohms, but varies with
distance and quality of
service. The audio signal
levels at the line terminals are
fractions of a volt. Normally,
the loudest permissible
modem tones are around a
quarter of a volt, measured
on the outgoing line.
Received signals are lower
still, typically one half to one
tenth this value for local
service, and even less on long
distance loops.
When the phone is
connected to the line by
lifting the hookswitch, the
line voltage drops to around 6
volts or so. The traditional
dial signals by breaking this
connection to deliver a group
of mechanically spaced pulses
that jump the line voltage
between the open circuit and
phone-off-the-hook values.
Touch tone systems replace
the dial with a low impedance
that sums the tones of the
next section (see Fig. 13)
onto the line for signalling, a
pair of tones at a time.
The ringer is capacitively
coupled across the line and is
resonant to some low
frequency in the 20 to 47
Hertz range. Ringing voltage
is an ac signal of 86 volts
RMS. Selective ringing of a
party line can be done in
three wire systems with a
ground return by ringing one
phone from L1 to ground and
the other one from L2 to
ground. In two wire systems,
ringer circuits with different
Fig. J 3. Standard touch tone frequencies. Each key simultaneously
generates two tones as shown.
HERTZ
I209
OPTIONAL KEYS
I336 I477
I
697
770
852
94I
I
1
I
"I
I
_, I
I
34
resonant frequencies can be
selectively rung by changing
the frequency of the ring
signal.
For direct entry modems,
either a protective network or
a data access arrangement
such as the Bell CBS or CBT
units can be used. These
networks simulate the
impedance of the telephone
when activated and prevent
any supply voltages from
going onto or coming off of
the power line. Under no
circumstances should dc
power be applied to or
removed from the phone
system lines, or any
impedance be placed across
the line or to ground that
would degrade normal
telephone services.
400 Style (Touch Tone)
Modems
Modems based on touch
tone signalling frequencies are
usually limited to low data
rates and often to a limited
number of available
characters. Touch tone
signalling is based on
simultaneously sending a pair
of carefully chosen tones,
following the code of Fig. 1 3.
The tone pair must exist
for 40 milliseconds and the
minimum time between tone
pairs is 40 milliseconds, with
a resulting maximum
character rate of 12 per
second. Touch tones are
normally entered at signal
levels somewhat higher than
other voice and modem
signals, being around three
quarters of a volt RMS for
the high frequencies and
around half a volt for the low
group. Line characteristics
equalize these amplitudes by
the time they get to
recognition circuits.
A touch tone modem
transmitter can simply be the
touch tone dial of a remote
phone, or it can be a circuit
to generate two sine waves of
proper amplitude and
frequency simultaneously.
Unlike other modems, and
much of the serial interface
of this chapter, the code is
activated directly by contact
closures. One closure, rather
than a serial code, is all that is
needed to send one of twelve
or one of sixteen separate
pieces of information.
Additional information on
touch tone techniques
appears in the March 1963
IEEE Transactions on
Applications and Industry,
the Signetics Linear IC
Applications Manual, and
Fig. 14. Full duplex 300 Baud modems.
(a) Originate modem (unit making call).
SERIAL
DATA
FSK OSC
1070 Hz SPACE
1270Hz MARK
FILTER
1500Hz
LOWPASS
FROM °~
UART
DUPLEXER
(SPACE"0 MARK-I )
PHONE
SERIAL
DATA
DISCRIMINATOR
2025 Hz SPACE
2225 Hz MARK
LIMITER
FILTER
I900-2350HZ
BANDPASS
LINE
TO °^
UART
(b) Answer modem (unit receiving call).
SERIAL
DATA
FSK OSC
2025 Hz SPACE
2225 Hz MARK
►
FILTER
2500 Hz
LOWPASS
FROM "^
UART
DUPLEXER
PHONE
SERIAL
DATA
DISCRIMINATOR
1070Hz MARK
1270 Hz SPACE
■* —
LIMITER
FILTER
950-1400 Hz
BANDPASS
LINE
TO °^
UART
Additional tones or tone
combinations can be added,
such as in the Bell 401 L or
402C systems that offer 99 or
256 characters.
Touch tone reception
consists of three parts. First,
the signals need sharply
filtered with bandpass group
filters whose response is 650
to 1000 Hertz for the low
band and 11 50 to 1700 Hertz
for the high band. Adequate
prefiltering is absolutely
essential for most tone
detection schemes. Tones are
then detected, using limiters
and slicers somewhat similar
to Fig. 9, using narrow
bandpass filters and
detectors, or using phase lock
loop tone detectors such as
Signetics 567 tone decoder.
Finally, the detected tones
are combined with suitable
two of eight digital logic.
various issues of the Bell
System Technical Journal.
103 Style (300 Baud, Full
Duplex) Modems
"103" style modems are
often the best choice for TVT
use, as they offer full duplex,
two way, operation at 1 1 0 or
300 Baud rates over the
ordinary phone line. Fig. 14
shows us a block diagram of
this type of modem.
The circuits are used in
pairs. The modem at the end
that's doing the calling is
called an originate modem. It
sends a 1 070 Hertz sine wave
for a space or zero and a
1 270 Hertz sine wave for a
mark or one, usually at a
phone level of -10 DBM or
around a quarter of a volt
RMS. The modem that's
doing the receiving is called
an answer modem, and it
35
Fig. 15. Digital "sine wave" modem transmitter is easily filtered as first
strong harmonics (-20 dB) are the ninth and eleventh.
INPUT CLOCK
IOX FREQUENCY OF
OUTPUT SINEWAVE
0
+ 10
4018
(CMOS)
HO WALKING
RING
COUNTER
33K
second harmonic distortion
of the carbon mike doesn't
raise its signals to an
intolerable level. Partial
compensation of this carbon
mike effect can be gotten by
summing a sine wave of plus
one half the third harmonic
with the fundamental. This
causes some cancellation and
allows a higher level of
transmission. Since most
modem detectors use only
the zero crossing information,
it's important to coherently
switch between these two
frequencies, changing only
when the sine wave goes
through zero. The coherent
operation eliminates "short
cycles" that will jitter the
received data.
Input signals to either
modem must be strongly
filtered to get rid of the other
channel tones, as well as
interference from speech,
noise, touch tone coding, and
other signals. The duplex coil
in the phone set reduces but
does not eliminate sidetone
coupling. If you build your
own duplexer instead, the
same cancellation is only
partial because of changing
telephone line impedances.
In addition to getting rid
of unwanted signals, there's a
second severe restriction to
the input filter. Both the ones
and zeros going through the
filter must be delayed an
equal amount. Otherwise the
ones and zeros will get out of
step with each other and
cause timing errors.
There are two basic ways
to go about building this style
of modem. An analog modem
generates and decodes its
signals using gated oscillators,
RC networks, and phase lock
loop detectors. A digital
modem uses all digital logic
for the frequency generation
and detection. Analog
modems should be avoided
for several reasons. The
transmitters inherently have
less stability, need field
; - OUTPUT
SINEWAVE" "9- * °- Digitally derived modem frequencies.
iPz
(a)
103:
300 BAUD
FULL DUPLEX
1. 1 1 5097
MHz
CRYSTAL
receives and responds to these
two frequencies. In turn, the
answer modem transmits a
2025 Hertz sine wave for a
space or a zero and a 2225
Hertz sine wave for a mark or
a one. These, in turn, are
acceptable to the originate
modem.
These frequencies are
carefully chosen to allow
two-way conversation
without interaction. The
answer modem always
transmits on the high
frequency since a 2025 Hertz
note is needed to
automatically disable echo
suppressors used on long
distance phone lines, and to
provide a standard
recognition signal for
automatic dialing equipment.
(Echo suppressors effectively
convert long distance lines
into voice keyed one way
lines. Two way transmission
on a long line is not possible
unless these suppressors are
defeated.)
There are several very
important things to consider
when you are designing a
modem. The transmitted
signal must be a low
distortion sine wave.
Particularly, its second
harmonic must be extremely
low to prevent the originate
modem's transmitter
splattering its own receive
spectrum with its second
harmonic. When acoustical
coupling is used, the transmit
level must be held low
enough that the rather bad
v8
t5
-H5
-H3
10,700
(+.21%)
■f II
T
12,700
(-.22%)
T-ll
T
20,250
( + .12%:
+ 10
T
22,250
( + .23%)
IOX FREQUENCIES
TO FIGURE 15
202 S
IZOOBAUD
ONE WAY
(b)
1.092000
MHz
CRYSTAL
{
H-4
-=-21
-f-13
I
o
3,000
A
21,000
IOX FREQUENCIES
TO FIGURE 15
36
Fig. 17. Modem receive filter. 4558 or 7415 op amps. 950-1400 Hz
1 900-2350 Hz = (parenthetical values) originate filter.
normal values = answer filter.
INPUT
(LOW Z
SOURCE)
o
I5K
845
(267.
.01
.01
I65K
(I65K)
I r
2I.5K
IMWV
(I8.7K)
1240 <
(324) T
.01
.01
237K
— vw —
(2I0K)
r
8870
II — w —
(8660)
2550 <
(619) i
.01
.01
97. 6 K
— 'wv ^
(95.3K)
r
OUTPUT
adjustments, and potentially
have a stronger second
harmonic, besides needing
calibration. They are harder
to coherently switch at zero
crossings to eliminate
transients. Analog receivers
also must be calibrated and
able to accurately resolve a
small frequency difference,
again with adjustment and
calibration.
At this writing, there is no
such thing as a modem on a
chip. The Motorola MC6860
is one IC that handles
approximately one fourth of
the circuitry needed for a
digital 103 modem. Two Exar
chips, the 2207 FSK
generator and the 210 FSK
demodulator provide around
half the circuitry for an
analog system. A premium set
of four hybrid integrated
circuits from Cermetek
Electronics is available that
does the whole job in their
Minimodem CHI 21 3, 1214,
1252, and 1257 devices.
Figs. 15-18 show several
techniques that might be of
use in your own modem
designs. Fig. 1 5 is a CMOS
digital IC sine wave generator;
it produces a sine wave in
response to a 1 0X digital
clock input. It is based on
summing phases of a walking
ring or Johnson counter and
has negligible harmonic
output up to the ninth and
eleventh, which are both
twenty decibels down (1/10
the amplitude) and easily
filtered. The output can also
be used to coherently
synchronize input switching.
Fig. 16 shows a digital timing
sequence that starts with a
crystal and produces all four
modem frequencies needed
for the Fig. 15 circuit. It can
be built with a CMOS 4520
and a gate or two. Fig. 17
shows us some active filters
useful as pre-filters with
controlled group delay
distortion. Fig. 18 shows an
adjustment and calibration
free receiver digital
discriminator.
More information on 103
style modem designs are
available in Motorola
applications note AN731,
Exar data sheets XR210 and
XR2207, The Active Filter
Cookbook (Sams), and
Cermetek Microelectronics
Minimodem datasheets.
202 Style (1200 Baud, Half
Duplex) Modems
The 202 style modem
circuits are both faster and
simpler than the 103 versions
and require less in the way of
circuitry. Their big
disadvantage is that most of
them are strictly simplex or
half duplex devices when
used on the ordinary two
wire phone line.
Simultaneously transmitting
and receiving is ordinarily not
possible.
Like the 103, 202
standards use frequency shift
keying. Bell standards call for
a 1 200 Hertz mark or one
and a 2200 Hertz space or
zero, while international
standards call for a 1300
Hertz space or zero and a
2100 Hertz mark or one. An
additional tone may need
generation to provide for
automatic answering.
Commercial units also
sometimes provide a back
channel of four or five Baud
for acknowledgement.
The circuit design
techniques for both types of
modem are similar. Because
of the faster Baud rate,
control of group delay
distortion in any filtering is
extremely important.
Detection circuitry must not
differentially delay ones with
respect to zeros. The
Rockwell 10371 Digital
Telecommunications Data
Interface handles much of the
non-filtering aspects of this
type of modem. This IC also
has a built in UART.
Several additional sources
of modem information
include the Microdata
Communications Handbook,
Data Modem Evaluation
Guide by V. V. Villips, and
various issues of Data
Communications and
Telecommunications.
Fig. 18. Digital discriminator needs no adjustments or calibration.
1.15097 CRYSTAL
FROM FIG 16
o
200pF
AND 4011
GATE (CMOS)
ORI6
CLOCK
16 512 1024
RECEIVED
DATA FROM
LIMITER
RESET
RIPPLE COUNTER
4040
(CMOS)
JT
SET
r^h
RESET
D Q
C
T
OUTPUT
) DATA TO
UART
D FLIP FLOP
4013
(CMOS)
37
WHAT SINGLE ELECTRONIC
MACHINE CAN BE USED TO
PERFORM/CONTROL ALL
THE FOLLOWING TYPES
OF SERVICES?
Send morse code
Control repeater stations
Operate as a calculator
Receive/send/buffer data
between a wide variety
of communication devices
Monitor instruments
Control machines
Sort/compile data
Test other devices
Play games
the SCELBI -8B MINI -COMPUTER CAN!
SCELBI COMPUTER CONSULTING, INC.- The company that pioneered in producing the small computer for the
individual user with the popular SCELBI— 8 H, now brings you the new SCELBI— 8B with increased capability!
Like the former SCELBI-8H, the SCELBI-8B is built around the amazing '8 0 0 8' "CPU-on-a-Chip" which has been
revolutionizing the electronics world.
However, the NEW SCELBI— 8B offers extended memory capability at reduced cost! It is directly expandable to
16,384 words of RAM/ROM/PROM memory. This increased memory capability now means the user has the potential in
a small and compact computer to support compiler type languages, manipulate sizable data bases for business and
scientific applications, and support a wide variety of programs including those that take advantage of external mass
memory storage devices.
The NEW SCELBI— 8B still retains the outstanding features of its predecessor. Decoding logic for 8 Output and 6
Input Ports is built into the basic computer. Plug-in capability for I/O devices is provided on the chassis. A unique,
simple to operate console that utilizes just 1 1 switches on the front panel makes the SCELBI— 8B a pleasure to use.
The NEW SCELBI— 8B is backed by a line of low cost SCELBI interfaces which currently include: an interface that
turns an oscilloscope into an alphanumeric display system, low cost keyboard and TTY interfaces, and an interface that
turns a low cost audio tape cassette into a "Mag-Tape" storage and retrieval unit.
Last, but certainly not least, SCELBI has a wide selection of software ready to run on the NEW SCELBI— 8B
including: Editors, Assemblers, calculating programs, I/O and general utility routines. Additionally, SCELBI produces
publications that can show you how to develop your own custom tailored programs.
The NEW SCELBI— 8B isavailableNOW. (We have been delivering since June!) It is available in three forms. Ultra-low
cost "Unpopulated" card sets with chassis kits starting at $259.00*. Complete parts kits for a 1,024 word
mini-computer as low as $499.00*. An assembled and tested 4,096 word computer is just $849.00*. Interfaces,
accessories, and software sold separately.
(* Domestic prices.'
(Prices, specifications and availability subject to change without notice)
Literature available for S.A.S.E.
ICELBI COIHPUIER
CONIUIXING INC.
1322 REAR BOSTON POST ROAD
MILFORD, CONNECTICUT 06460
38
U^^WT Xi^^^ l$^^C^l$ (AND SIMILAR MICROCOMPUTERS)
Written to provide you with the detailed knowledge you need to know in order to successfully
develop your own MACHINE LANGUAGE PROGRAMS! This information packed publication
discusses and provides numerous examples of algorithms and routines that can be immediately
applied to practical problems. Coverage includes:
DETAILED PRESENTA TION OF THE "8008" INSTRUCTION SET MA THEMA TICAL OPERA TIONS
FL OW CHARTING MAPPING MUL TIPL E-PRECISION A RITHMETIC
EDITING AND ASSEMBLING DEBUGGING TIPS FLOATING-POINT PACKAGE
FUND AMENTA L PROGRAMMING TECHNIQUES MAXIMIZING MEM OR Y UTIL IZA TION
LOOPS, COUNTERS, POINTERS, MASKS I/O PROGRAMMING REAL-TIME PROGRAMMING
ORGANIZING TABLES SEARCH AND SORT ROUTINES PROGRAMMING FOR "PROMS"
CREA TIVE PROGRAMMING CONCEPTS
Virtually all techniques and routines illustrated also applicable to '8080' and similar types of
micro/minicomputers, with appropriate machine code substitution. Orders now being accepted
for immediate delivery at the LOW price of just $19.95.* Add $3.00 if PRIORITY mailing
service desired. (*Domestic prices.) Pricing, specifications, and availability subject to change
Order direct from - without notice.
If I El COIHPUIEK 1322REAR BOSTON POST ROAD
CONfUMlNO INC. MILFORD CONNECTICUT 06460
C£4s& I enclose $19.95. Send me a postpaid copy of:
MACHINE LANGUAGE PROGRAMMING for the '8008' (and similar microcomputers)
Please send my copy by Priority Mail. I enclose $3.00 extra.
Charge it to my Mastercharge Card #
Bank # Exp. Date Date
Card Holders Signature
Ship to: NAME:
ADDRESS: . ZIP:
39
The increasing interest in
microcomputers for home
and fun and games as well as
practical work has led to a
number of information
centers — the clubs and
newsletters organized by
readers of BYTE to help
promote communications
among practitioners of this
art. For this first issue of
BYTE, I've collected together
a "dump" (in English
character text, not
hexadecimal) of my files on
the subject to date.
. . . CARL
People's Computer Company
POBox 310
Menlo Park CA 94025
Editor: Bob Albrecht
This organization puts out
a newspaper style publication
of information, fantasy,
technical designs, etc. It is a
"non profit" operation about
recreational and educational
uses of computers.
Publication is on an irregular
schedule with subscriptions
to 5 issues at $5 to all
comers, $3 to those who
present some evidence of
status as students. The
magazine is typeset and
assembled with plenty of
graphics in what might be
called a "neo-Whole Earth
Catalog" style. The same
organization also runs the
PCC bookstore at the same
address.
The Computer Hobbyist
Box 295
Cary NC 27511
1-919-467-3145 or
1-919-851-7223 evenings or
weekends
The Computer Hobbyist
people put out an excellent
photo offset newsletter
prepared with the help of a
microcomputer text editing
system. A sample of their
product — in the form of an
article by Hal Chamberlin
comparing three micros — is
reprinted by permission in
this issue of BYTE. Of
particular interest for the
coming arguments and
controversies over cassette
interface methods is their
unique method of recording
which Hal Chamberlin
described to me in phone
conversation. The goals of the
design are reliability and
speed independence, which
are achieved by a pulse
recording technique. Another
design published by TCH is a
fairly sophisticated visual
graphics system (it might be
called a "Cadillac" among
such systems) which uses a
highly modified TV and can
produce very detailed high
resolution pictures. TCH also
is planning to supply a series
of kits with PCs and parts for
their designs. TCH also is very
close to having available a
BASIC package for the 8008
computer.
PEOPLE'S COMPUTER
COMPANY
VOLUME 3 MARCH 75 NUMBER4
40
HOMEBREW COMPUTER CLUB NEWSLETTER
Issue number lour Fred Moore, editor, 55B Santa On; Ave.. Menlo Park, Ca 94025 June 7. 1975
"IT'S A HOBBY"
Yes, a hobby for fun. Interest in home computing
is spreading fast. I feel our club is doing a good job in
supporting the individual experimenter get his or her
system up and Hying. There are a lot of obstacles, bugs.
■nd technical tricky problems which can frustrate and
discourage a person alone. By sharing our experience
Btld exchanging tips we 'advance the state of the art and
make low com home computing possible for more folks.
lining your beast in for a demo1 Can it sing or
play games1 What tricks does it know? Let's have a
look at it.
I hanks to Kay and Karen for demonstrating his
OOSA Microcomputer with audio cassette adapter at
the May 14th meeting. Using an HI1D8 microprocessor.1
the ""HA is available as a kit (53751 from K(,S Klcc-
ironies 3659 Charles Si. Suite K. Santa Clara. Ca
Kecentlv Kay got Jerry's TVTypcwnter I working
nicely
1'hanks to Cordon for bringing and explaining his
text editing system May 28th. The system's beauty is
the ease with which one can look into 16 K of storage
and tind what's there to be rearranged as you please
The only thing I missed in playing REVERST on it
were the bcll.s congratulating me when I'd won. A
L'onipincr game without bells is like a steam engine
without a whistle1
A special ihanks io Wayne for bringing the club
i paper tape version of a Eortran IV cross assembler
n mag tapi
*
. (1
v»<
&4
■- V.
s~-
■J
\
'.•?.
:<>-r
Wayne
r the 8008 .i
i- reside!
so listings
The .-lull
ind Pl./M o
i Hum) and 8008 assemblers.
now has a responsibility t<> use this software in a non*
proftl manner, which means no private or commercial
deals. II you have a system large enough to house a
copy of the mag tape and can make access available to
the rest of the members, contact Gordon French
Wayne also hrought a TV terminal Intel developed
two years ago as a demonstration unit. The unit uses
a -loo-t microprocessor and has both a character and a
plot mode I5x 7 dot square you can move around).
Wayne hooked it up to a TV and tuned it in on the
edge ot channel 0. The current ROM gacc us onr
choice of tic-tac-ioc or tennis. We played both.
At the previous gathering Wayne had suggested
using a shadow ROM for bootstrapping svhen you
fust tutn on yout computer. This time on request he
drew a schematic on the grcenhoatd. but I don't think
many of the less technically oriented among us followed
his explanation completely. Which btings me to a
general observation: The club is quite a mixed gtoup
We ate composed of outright novices to top flighi
professionals and leaders in the industry. Many arc
Somewhere inbetween. Only a few arc strong in both
hardware and software.
It seems to me. we need
classes or some more paricnt
and detailed means of convey-
ing inlotmation across an
ignorance gap. and at the
.ame time not borr the
more experienced among
US. I think our sire is
large enough now that
t meeting as a svholc
im say 7 to 9pm, we
en break mm thtee
fout small groups
r more educationally
iented discussions
an hout. Anyone
' .^ a ^/JT^ have comments on this'
6 "-< ■ »-*Eivfirj, Perhaps thctc is enough
learning taking place as
it Is and any attempt to
optimize*)! further will
upset the telaxed inlormality ot the gatherings Comments?
Thanks ro John Draper tor setting up a group library
account for the club at Call Computet. Those who have
accounts, have vour nnmber changed to a K-2'5 number.
If we have enough join, the club won't be charged the $5 110
monthly base rate [We also pay 63 cents pet thousand chat-
actcrs on file pcrmonth i The intention ts to have useful
programs smtcu in the K-2I1H library tile
Thanks to Dan Mr testing the 2 ll)2's the gtoup put-
chased from Solid State Music. Thanks to Lenny and Frank
tin setting up the auditorium for our use. Much thanks and
appreciation to everyone for yout tunc .energy, and spirit in
making the club what it is
The MITS MOBILE came to Rickey's Hyatt House in
Palo Alto June 5th is nth The room was packed { 1 50+)
with amateurs and esperimcniers eager to find out about
this nesv electronic toy Ihe evidence is overwhelming that
people want computers, probable- lor self-cntettainiticiu and
educational Usage Whs' did the Pig Companies miss this
markcrr They were busy sellinj
OthCf land the government and military
to sell directly to the public. I'm all in
MITS is having with the Altair because
( 1 1 lorcc the awakening of other eomp.
for low-cost computers [or use in the h
Competition, resulting in I
the hand held calculator I
nines to each
I hey don'r wanr
ar ol ihe splash
all do ihree things
s to the demand
:. which will mean
[list as happened with
ompiucr clubs and
hobby groups in form lo fill ihe tccbnic
(3) help demystify computers. Computcts arc not magic.
And it is important for the general public to begin to undci
stand the limits of these machines and that humans are
responsible for the programming
Amateur Computer Society
of New Jersey Is Up and
Running
The ACSNJ was th-st
assembled on Friday, June
13, 1975.
The feasibility study was
performed by Sal Libes who
has become its Operating
Manager. The system will run
monthly on the second or
third Friday of the month.
Input is in the form of 40
+ enthusiastic hobbyists. Over
50% of the amateurs are
hardware and/or software
oriented. There are 10 home
computers running in the
group, 5 of which are Altairs.
Output will be a local
newsletter. The first issue will
contain information compiled
from a questionnaire given
out at the meeting.
Information was processed
randomly. There were some
minor bugs which had to be
worked out; however, those
assembled were pleased with
the results.
A parts supplier was on
hand and welcomed as a local
source.
The second running of the
ACSNJ was scheduled for
Friday, July 18, at the Union
County Technical Institute,
1776 Raritan Road, Scotch
Plains, New Jersey.
It's good news.
The Amateur Computer
Society of New Jersey Is
Assembled and Running.
George Fischer
72 So. Railroad Ave.
Staten Island NY 10305
The Amateur Computer
Society
Stephen B. Gray
260 Noroton Ave.
Darien CT 06820
Mr. Gray puts out a
newsletter. No further
information is available about
The Amateur Computer
Society.
Homebrew Computer Club
Newsletter
Fred Moore, Editor
558 Santa Cruz Ave.
Menlo Park CA 94025
The Homebrew Computer
Club is an organization lo-
cated in Northern California
around Menlo Park. The club
was founded by Fred Moore
with a hand from Gordon
French. A newsletter is
published photo offset on a
monthly schedule — although
no price is quoted, a donation
of 50-75^ per issue would be
a fair recompense for costs
listed in the club treasury
report in issue No. 4. The
newsletter has included some
excellent design notes by
Terry Lee, covering SART
chips, power supplies, heat
sinking, etc.
Issue No. 4 reports the
start of a San Francisco-
Berkeley chapter, and refers
to another California club:
Sonoma County
Minicomputer Club
Mark Robinson, President
1-707-544-2865 (work)
1-707-525-1659 (home)
^fflfRW^fW^
41
JAMES ELECTRONICS
P. 0. BOX 822 BELMONT, CALIFORNIA 94002
(415) 592-8097
DIGITAL VOLTMETER
%
1.3" high]
play. Tha
.5% lull scale accuracy. It v.
the Siliconix LD110. LDll
The voltmeter uses MAN7 n
supply
eDVM
less power supply.
$39.95 Per Kit
LOGIC PROBE
c Piobe Is a unit which Is foi the
! indespensiblc in trouble shooting
lilies: TTL. DTL. RTL. CMOS. It
e power it needs to operate directly
10 mA max. It uses a MAN3 readou
symbols: CHI)— 1 (LOW)-o IPULSEI-P.
Probe can detect high frequency pu's«
45 MHi. It can't be used at MOS level
$9.95 Per Kit
DIGITAL COUNTER
♦
$29.95 Per Kit
This ,i a a digit counter un.t *h ch will
count up lo 9999 and then prov.de an over
(low pulse It is based around the Mostek
MK5007 digital courtier chip. The un-t pet-
forms the following (unctloni Coum Input,
RESET, i .■:! '.■.■■■■■ .-. The counter uper-
a 250 k
. The c
-T.LitU ..-,
the only extra compone
a timcbase. divider chain and gate. The u
rcqu.res 5V, and -12V. The unil cor
complete as shown on the lelt less pot
supply.
ONE KILOBYTE
RANDOM ACCESS MEMORY
; lor
n a HOMEBREW I
es on array of 2102 1kx
ess memories lo pioduce
y compatible with most
uier systems. We provide
lality low profile sockets.
iimn bypass capacitor.
♦
$69.95 Per Kit
5 VOLT 1 AMP "PL SUPPLY
♦
5 VOLT 1 AMP
J2 L SUPPLY
This is a standard TTL power supply using
Ihe well Known LM309K regulator IC to
provide a solid 1 AMP ol current at 5 volts
We try to make things easy for you by
pioviding everything you need in one pack-
age, including the hardwire for only:
$9.95 Per Kit
PLASTIC INSTRUMENT CASE
uf our DVM and COUNTER kit
enough left for power supply or
(cullent for many other projects
2"x3l/8"x57/8".
fc^
$5.95 Per Case
Satisfaction Guaranteed. $5.00 Min. Order. U.S. Fundi.
Add $1.25 for Postage — Write for FREE 1975S Catalog
California Residents — Add 6% Sales Tax
0/iWSS
P.O. BOX 822, BELMONT, CA. 94002
PHONE ORDERS - (415) 592-8097
Micro-8 User Group
Newsletter
Hal Singer, Editor
Cabrillo Computer Center
Cabrillo High School
Lompoc CA 93436
1-805-733-3501
The "Mark-8" is one of
the first widely marketed
home computer kits — an
8008-oriented design of
Jonathan Titus (TYCHON,
Inc., PO Box 242, Blacksburg
VA 24060). It first appeared
Club in The Dallas-Fort
Worth Texas Area
Bill Fuller (2377 Dalworth
157, Grand Prairie, Texas —
1-214-264-01 1 1/1-214-
264-9017) organized an
informal get together June 29
in a park near Hurst and
Bedford, Texas. At that
meeting, 12 people appeared
- including three Altair
owners, the owner of a
Martin Research Mark 2 and
one home brew purist.
Contact Bill for the latest
info on activities on the Lone
Star state to date.
The Digital Groups
PO Box 6528
Denver CO 80206
This club provides a
newsletter of technical and
organizational interest which
is reproduced photo offset at
$6 per year (12 issues). Also
offered are kits, boards, and
assembled products for
miscellaneous peripherals
designed by members in the
Denver area.
on a large scale in an article in
the July 1974 issue of the
magazine Radio Electronics -
and the result of a large
response to this product is
Hal Singer's formation of the
Micro-8 User Group with an
initial orientation to the 8008
as implemented via the
Mark-8. The newsletter is a
self-published offset
publication available at $6 for
six issues. Much of the
information is original as
submitted, although Hal
summarizes a lot of the stuff
with his text editor and
printer at the Cabrillo
Computer Center. For those
interested in the history of
one branch of the home
computer hobby, the back
issues of Micro-8 User Group
Newsletter record much
activity of the early pioneers
of the hobby.
Staccato Notes
Derek McColl reports in
phone conversation that he
attended the first meeting of
an as yet unnamed Los
Angeles area computer club.
You can reach Derek at 1715
Havemeyer, Redondo Beach
CA 90278 to find out about
that club.
Was your club or
newsletter omitted? No claim
is made that this listing is
complete. Organizers of clubs
are invited to send details of
their plans for publication in
BYTE.
New England Computer
Kibitzers? (NECK) I'll act as
an initial focal point for a
Boston area computer club.
Write BYTE Editorial Offices,
Box 378, Belmont MA
02178, or call me at
1-6 17-729-6914
evenings/ weekends.
. . . CARL
42
COMPUTER- DATA INPUT KEYBOARDS
B5283
B5199
ASCII encoded keyboard. In its own enclosure. Originaly used in
SANDERS ASSOCIATES 720 Terminal System. In like new
condition. Usefull for any project requiring an ASCii encoded
keyboard. 50 Alpha Numeric keys plus 11 computer symbols
STOCK NO.B52S3 keyboard $35.00 2/65.00
MICRO— SWITCH (Honeywell) S bit binary coded board. 56 keys,
alpha - meric and computer symbols Built in TTL decoder. New
in factory cartons. A beautiful keyboard.
STOCK NO.B5199 Microswitch keyboard. $45.00 2/80.00
KEYTOPS & SWITCHES
TO MAKE YOUR OWN KEYBOARD
We have a large selection of KEYTOPS and SWITCHES, made by
RAYTHEON CO. The keytops come in black, grey and white,
with contrasting legends. The switches mate with the tops, and are
magnetic reed switches. The following combinations are available:
54 key typewriter set, keys only, black K9276 2.95
54 key typewriter set, keys only, grey K9278 2.95
54 key TTY set, no symbols white K9279 2.95
54 key TTY set, with symbols white K9282 2.95
54 key set, keys & switches black K9288
54 key set, keys & switches grey K9290
54 TTY set, no symbols keys & Sw. White K9291
54 TTY set, with symbols, keys & Sw. whiteK9291
11 Key Numeric set. Keys only Black
11 Key Numeric set. Keys only Grey
11 Key Numeric set. Keys only White
12 Key numeric set, Keys only white
11 Key Num. set, keys & switches Black
11 Key Num. set, keys & switchesGrey
1 1 Key Num. set, keys & switchesWhite
12 Key Num. set, keys & switcheswhite
K9283
K9284
K9295
K9286
30.00
30.00
30.00
30.00
1.50
1.50
1.50
1.50
Blank key 1 XA keys wide
Blank key 2 keys wide
K9297A with switch
K9297B with switch
white
white
white
white
K9293 7.00
K9294 7.00
K9295 7.00
K9296 7.50
K9297A 3/.25
K9297B 3/.25
K9298A 3/2.00
K9298B 3/2.00
MINIATURE 7 SEGMENT READOUT
Miniature 7 segment LED readout (EXITON XMN 101
Displays all numbers and 9 letters. O.D. 5/1 6"x 1/4"
Display is .12 ". SPECIAL FOR THIS ISSUE ONLY
STOCK NO.B5173 with data sheet .50 ea. 5/2.00
TRANSFORMERS
Computer projects need power supplies. Finding the right power
transformer can be a problem. We have one of the largest and
most diversified stocks of power transformers in the country.
Below we list some representative items in our inventory. Our
catalog, free on request lists many more.
36 V. <s> 1 .0 A. ct, & 6.3 V <°> 200 ma. 3 lbs. B931 3
70 V. <s> 1.5 A. ct, & 6.3 V <s> 500 ma. 6 lb. B9314
90 V. @> 2.0 A. ct, & 6.3 V @ 1.5 A. 8Vi lb. B9315
50 V.-@ 1.5 A. ct, & 6.3V @500 ma. 6 lb. B9316
26 V. <s> 1 .0 A. ct. &6.3 V. @ 500 ma. 3 lb. B9318
38 V. @ 1.5 A. ct. & 6.0 V.@ 500 ma. 2 lb. B9319
350 V. @ 35 ma. ct. & 6.3 V. <§> 2.7 A 2 lb. B9321
70 V. @ 1.5 A. ct. Si 6.3 V @ 1.5 A. 7Lb. B9322
35 V. <9> 6.0 Ct. & 10 V. @ 10.0 A. 6.0 Lb. B9906
64 or 32 V. @> 8.0 A. ct. & 18 V. @ 8.0 A ct. 10 lb. B9905 1 1.95
3.50 2/6.00
6.50 2/12.00
9.95 2/19.00
6.50 2/12.00
3.75 2/7.00
6.95 2/13.00
3.50 2/6.00
6.75 2/13.00
8.95 ea.
VOLTAGE REGULATOR BOARDS
B5169 is a board containing 3 15 volt high current regulators
with 0.1% regulation. 2 of the regulators are rated @ 3 Amps.,
and the other @ 6.0 amps. The current in each regulator may
be doubled with the regulation going to 0.5%.AM 3 regulators
are short circuit proof, and 2 have electronic crowbar protect-
ion. Brand new, in factory boxes.
STOCK NO. B5 169 $11.95 ea. 2/21.00
B9013 is a triple regulator with +12 volt regulation @ 200
ma. and the third regulator is a tracking regulator, providing
regulation from 0 to 5 volta @ .5 A.
STOCK NO.B9013 $5.95 ea. 2/10.00
Roth regulators above come withcircuit diagrams.
OPERATIONAL AMPLIFIERS
(OP — AMPSl
TYPE DESCRIPTION CASE STOCK PRICE
709
4709
741
747
741
747CT
1458
LM101A
Hi Performance
Dual 709
Hi Performance
Dual 741
Hi Performance
Dual 741
Dual 741
Gen, Purpose
TO-5
DIP
DIP
DIP
Mini
TO-5
Mini
TO-5
B4301
B5301
B4316
B4317
DIP B4345
B3111
DIP B3112
B4503
.50
1.00
.65
1.25
.65
1.25
1.25
.50
5/2.00
6/5.00
5/3.00
5/5.00
5/3.00
5/5.00
5/5.00
5/2.00
SELF SCAN PANEL DISPLAY
jjT} Burroughs
MODEL
BURROUGHS SELF
SCAN display, des-
igned for numeric app-
lication, requiring up to
SSD 1000-0010 . I6 characters of numeric
information. Display is made
up of neon dot matrix. Each character is defined by a positive
logic 4 bit code. Display operates in a scanning mode, scanning
from left to right, one column at a time. Electronics is in inter
ior of bezel, and consists of LSI chip and integrated circuits.
Current distributor price is $135.00 . LIMITED QUANTITY
STOCK NO. 5180 with data $49.50 2/90.00
Please include sufficient
postage. Excess refunded
MINIMUM ORDER $5.00
DELTA ELECTRONICS CO.
BOX 1, LYNN, MASSACHUSETTS 01903
Phone (617) 388-4705
Send for the latest edition
of our catalog. Loaded with
electronic and computer
bargains.
43
WRYTE for BYTE
by
Chris Ryland
25 FollenSt.
Cambridge MA 02138
As an editor of BYTE, I
gave a tour of the
author-pitfall jungle to several
interested people at a recent
(if imaginary) small systems
conference. Below is what
transpired.
"OK, gentlemen, step right
this way; we're heading into
the jungle now. Be careful of
the pitfall directly to your
left. Any questions about the
terrain so far?"
"Well, I have an idea for
an article, but it's not very
original . . . ," says one of the
tourists, dropping into the
pitfall.
"Oops! 1 warned him
about that! Anyway, the rest
of you can benefit from his
mistake: that objection just
doesn't stand. A new idea
might seeem old hat to you,
simply because you thought
of it. Or, a variation on an old
idea can certainly be material
for print — what scientist
dares claim a bsolu te
originality for his research?
Furthermore, even small
system lore, presented in a
tutorial style or approached
from a new angle, can be
both original and valuable.
Look out to your right! More
questions?"
''But I can't write
anyway ..." cries another
pitfall victim.
"I warned him! That's one
of the deepest pitfalls around
here. Well, the rest of you
probably write much better
than you think. It's necessary
to have some humility here —
your writing may sound bad
to you, but no one expects
you to win the Pulitzer Prize.
Even if you don't write like a
pro, think of BYTE as a
device for getting good, if
rough, ideas into print:
submit an article when you've
done your 'technical' best,
and if we think it's worth it,
we'll do our 'editorial' best to
get it into publishable shape
(leaving your style intact).
This is worth emphasizing —
most magazines accept only
polished articles by
professional writers, or else
they force their writers into a
stylistic straightjacket. But
we feel that BYTE can do the
most good, and be enjoyable
to read, if we publish good
ideas in as close to their
original form as
professionalism permits.
"Well, we've passed
through the most obvious
dangers, so please be more
careful where you walk.
Another question?"
"OK, I agree," says an
ink-stained tourist, "my idea
is good and I can write fairly
well. But what good will it
do . . ." Another one vanishes
into an obvious pitfall.
"I thought you'd all see
that one! Your published idea
can be invaluable to anyone
working on a similar problem.
It's unlikely that your work is
so unique that no one else
could benefit from it! There
are also many personal
advantages. There's the
satisfaction of serving others
in your field, and, not least
importantly, the money from
published articles. Getting
your name in print can both
give a boost to your
professional prestige, and can
sharpen your writing ability,
a useful tool in any job.
Finally, writing about your
idea forces you to understand
it more completely; also, any
feedback from us or from
other readers of BYTE can
certainly be helpful.
"This brings us nearly to
the edge of the jungle. Since
it's a lot safer here, you can
look back and see where
we've been."
"I see! But what can I
write about . . .?"
"Darn, I thought I had
spotted all the pitfalls! But
you can learn from his
mistake, and submit feature
(medium to long) articles,
short articles (tips and
techniques, for example), or
column contributions; at this
point, you might even get a
regular column started! As far
as 'what to write about?', I'll
quote Carl Helmers' ample
answer to this question: 'I
won't pretend to have a
formula answer for that
one . . .
" 'Some suggestions of
general areas come to
mind . . .
" 'Project articles on new
software, hardware or
applications designs for
systems. Projects which you
44
have completed or have in
progress can be written up for
the use of other subscribers.
Don't let that "new"
intimidate you, either — if it's
new to you, and you're
enthusiastic about it, then the
project is worth setting down
on paper for a try at
publication.
" 'Special interests. Do
your ideas tend to run along a
particular train of thought?
Are you a FORTRAN freak,
a BASIC fundamentalist, an
8008 hacker, a PDP-8 fanatic,
a space war addict, a lover of
LIFE, or what have you?
Submit an article or "n" to
BYTE on your special
interest, and it could become
an important part of the lore
of home brew computing —
"bytology" for short.
" 'Surplus equipment. In
Boston, there is a whole
fraternity of junk men who
often don't know a thing
about the stuff they sell, but
who sell it at pennies on the
dollar. Often such stuff is
usable in a computer system,
with appropriate knowledge
of how to use it. I once
picked up a $3000 printer for
$10 because it didn't look
like a printer, and was left in
a heap of junk to rot. Write
up an article on how to
convert particular items of
surplus equipment to small
systems use, and you will
earn the heartfelt thanks of
all the other byters who can
use your idea. Often the
cheapest course to a
computer is an appropriately
surplus "mainframe" saved
from a scrap dealer or found
at an auction. But, beware —
misadventures can also
happen, if you're not careful.
Don't be ashamed of your
mistakes, though — capitalize
— on them by writing up
your experience for BYTE.
" 'Games Byters Play.
Fun-type applications make
excellent articles. [See the
beginning of a series of
articles on the Game of LIFE,
written by Carl, in this issue
of BYTE. I There are other
fun programs to be written
using a graphics display or
other peripherals with an
interactive potential. If you
want some ideas, write us,
and we'll suggest one or two
or two hundred — or, if you
have your own ideas, but are
puzzled as to how to put
them into practice, maybe we
can help and the net result
would be an article in BYTE.
" 'Practical applications.
Do you also use your byter's
system in your business?
Many readers are businessmen
— doctors, lawyers,
architects, engineers,
merchants — who justify their
expenses by the practical, as
well as the fun, applications
of their systems. Write an
article on business
applications — billing,
inventory, mailing lists, profit
statements, etc. The
businessmen in the audience
will surely appreciate it. By
saving their time and making
their businesses more
efficient, your article will
help improve the commerce
that makes all civilized
amenities possible.
" 'Education. Do you have
a flair for writing elementary
tutorial stuff, with the
knowledge to back it up?
Write an article or series of
articles on the basics. As has
been pointed out to me in
many letters, the tutorial
aspects of design and
programming are not to be
skimped on — especially if
you want to teach your
friends and associates so you
can talk to them again! It
always gives me a great
satisfaction to see someone
grasp a principle, discover a
connection, and experience
the delight of knowledge
attained. With a published
article, although you can't
observe this at first hand, the
feedback in correspondence
should be evidence enough.
" 'Reviews. Have you built
a computer kit? Write an
article reviewing your
experience with the particular
kit. Give the manufacturer an
objective treatment — don't
blame him for your mistakes
— but also be fair to readers
by pointing out relative
advantages and disadvantages
of the product . . . Did you
find an interesting book on
computer related objects?
Review it for your
compatriots in the field. Such
books include technical
works as well as fiction and
science fiction along
computer lines. (The
microcomputer itself is so
"science fictiony" that many
of my own friends don't
really believe in 'em!)
" 'Human interest and
creative writing. Byters
appreciate the human aspects
of computing. After all,
computers are designed, built
The chances are that
you know a lot about
some aspect of com-
puters — this is your
opportunity to write
and help other readers.
The Pitfall: Waiting
for others to write.
Fame (moderate) and
Fortune (modest) await
your contribution to
BYTE.
45
Send your
articles to:
BYTE
Box 378
Belmont MA 02178
Make sure your
manuscript is:
-neatly typed
-double-spaced
-one side of paper
--and includes all
drawings, photos, tables
and other non-text
materials needed.
and used by human beings.
There is room for creative
writing, humorous anecdotes,
and speculations on the
evolution of technology,
commentary on computing
history, etc. Who will be the
first to submit an article on
the history of Herman
Hollerith?
" 'This is by no means an
exhaustive list of all the
possible topics for BYTE
articles. If you don't see your
own idea in this list of
categories, we can always
make a category to fit it
into . . . provided you take
the step of getting it down on
paper .... In addition to the
standard articles, we will
print (without charge, of
course) information about
club meetings, club
organizers, and individuals
willing to help others with
their home brew systems, in
order to foster the growth of
the small scale systems idea.'
"Need I say more? And so
ends our tour. Now that
we're back in civilization,
anyone still interested can
follow me to the idea bar,
where we'll drink a few hints
about wryting for BYTE."
Some How To's of Writing a
Feature Article
Here is not the place to
give an "exposition on the
com pleat article and its
fashioning." But, if you've
decided to write a feature
article, and if the thought of
writing seems to go against
every bone in your body,
then the following might
help. You should feel
completely free to approach
this task in any way you
want; these ideas are only
suggestions. But, they have
worked for many people.
Here we go . . .
Outline It
Get your ideas down on
paper. Write a few (2 to 5)
sentences stating the central
idea of your article; this will
be your abstract. It should
guide the outline — if you
ever feel lost, return to the
abstract and find where to
pick up. Next, the outline.
Write down the main section
headings, choosing them from
the list below, or adding any
that are appropriate.
Introduction: Flesh out
your idea's skeleton, the
abstract, relating the
necessary motivation,
background, assumptions,
and source of ideas for the
article. For example, you
might tell how the idea came
about, what previous BYTE
articles your work is based
on, and what kind of
hardware and software
systems it requires for
operation.
Overall Design: Discuss
and outline the general shape
of the sy stem being
presented. This should be a
"principles of operation"
discussion at a relatively high
level (but be practical about
it), and will usually involve an
"overview" of the system
components, their actions
and interactions. Visual aids
such as block diagrams and
flow charts are necessities
here.
Details of Construction:
Whether it be schematics,
printed circuit layouts, or
program listings, the details
are necessary. If they are just
too bulky, then this section
should cover the system in
more detail than the previous
section, to whatever level is
most helpful.
Construction and
Debugging Techniques: The
method of construction
should be given here, if it is
not obvious (and don't
assume it is!). Any special
techniques or touchy areas
should be mentioned, as well
as methods of system
checkout (give, for example,
diagnostic programs or
hardware testing
instructions).
Operation Instructions: If
not given in the overall design
section, complete operating
instructions should be listed
here. Present the system as it
appears to a user. Good
examples of its use are the
most helpful documentation.
Conclusion: Write the
inevitable ending section (as
short as possible), with
mention of possible further
developments and
applications.
Using the guidelines for
the outline headings above,
jot down the main ideas
under each heading. Take the
result, shuffle the headings
and ideas until you're
satisfied with its structure
(note cards with a single item
per card are helpful here),
and call this your outline.
Make a permanent
typewritten version of this
outline, since it will be your
guide in what follows.
Write It
To write an article is to
enter a jungle of a different
nature than the one we
explored earlier. Without
actually entering this writing
pitfall jungle, I can forewarn
you of the most dangerous
pitfalls.
"Scribophobia: " This
"fear of writing" usually
strikes at the outset of the
journey. The solution:
working directly from the
outline, get a first draft
written, without stopping to
worry about clumsy language
or the niceties of grammar.
Write without inhibitions, no
matter how bad it sounds.
The important thing is to get
the rough draft written; once
it's done, the rest is easy by
comparison. Prepare diagrams
as you go — they should be
written and revised as an
integral part of the text, not
as a concession to formula.
Straying off the Path: The
road to the end of the writing
pitfall jungle is rather narrow,
but you have a good map:
your outline. Straying from it
is asking for literary disaster.
The written permanence of
the outline (did you take my
word for it earlier?) should
discourage you from changing
it too glibly.
46
Stuffiness: Avoid this
clanger at all costs; don't
confuse technical excellence
with highbrow phrases and
grammatical ''stuffed
shirt"-isms. Although this is a
matter of style, and would
normally be considered in
later drafts, the first goes
much easier if you write as
though talking to someone
about your idea. Don't avoid
humorous touches if that's
your style — they help to
keep up reader interest. For
example, cartoons that amuse
and instruct are a welcome
aid. Be intolerant with
circumlocutions and useless
phraseology. It is clear that
phrases like "it is very clear
that ..." are redundant and
only drag down the article
with dead weight.
Jargon: Be careful of the
"in-crowd" approach to
writing, which uses jargon
and cute phrases unknown to
the outsider. On the other
hand, don't feel obliged to
define common terms or
standard abbreviations (but
see the later section on article
glossaries).
Revise It
Many "How to Write"
authors have recommended
the fermentation method of
revision. Put the
freshly-typed (or written)
rough draft away, and only
come back to it after a few
days. This temporal distance
gives some objectivity during
the next step of revision. This
step will usually involve
several "passes" over the text,
by yourself and hopefully
others. Revision involves
looking for spelling, technical
and grammatical accuracy,
logical sequence of ideas,
consistency of notation, and
completeness of presentation.
For example, during revision
you may find several
out-of-place colloquialisms, a
few spelling errors, or an
omitted section on a detail of
construction. Try and put
yourself in the position of a
reader who wants to use your
idea: can he or she do so with
what you've written? Are
there any important but
unstated assumptions? Any
confusing diagrams or
descriptions? Aim to be
absolutely clear in the
technical details of the
article.
Shorter Articles
There's really no standard
approach to writing shorter
articles — the possible range
of such articles is so great
that it would be difficult to
even hint at their
"construction." Carl's section
on article topics should be a
source of some ideas, but my
only further advice is this: if
you have an idea that's not of
feature-article length, then
write it in any format you
wish, send it in, and we'll try
and fit it in somewhere.
Don't Gloss over the Glossary
Since BYTE is aimed at
everyone in the small systems
world, from junior high
school experimenters to
industry professionals, a good
feature of any article is a
glossary. Although it
certainly isn't a strict
necessity, a glossary should
contain the definitions of any
words, phrases, notions and
abbreviations that might be
unfamiliar to a good part of
your intended audience.
LIFE Line by Carl Helmers,
in this issue, is a good
example; since his article is
(besides other things) a
tutorial on system design, and
is intended for a wiue range
of readers, Carl has included
definitions of software and
hardware terms that might be
confusing or "jargon-ish" to
the reader. Carl's glossary
illustrates that definitions
needn't be boring or dry —
any sort of information about
the terms being defined can
be useful, i nc I u ding
humorous definitions,
anecdotes about derivations
or other uses of a term,
stories of your previous
confusion about some phrase
(and how you cleared it up),
and so on. If your article
contains any kind of
"side-light" information
about possibly confusing
words or concepts, then you
should include these
"tidbytes" as part of your
glossary.
Send It In!
Some practicalities about
submission of any kind of
article: the text should be
typewritten (double-spaced,
with ample margins) —if you
don't type, it's not expensive
to have it done; the point of
insertion for each diagram
should be clearly marked; the
illustrations should be clear
and oversized, if they are
reasonably simple — our own
technical staff can do the
final drawings; include any
special editorial or publishing
instructions in a conspicuous
place; if there's a glossary, it
should be distinguished from
the main body of text in
some way. For feature
articles, include the abstract
and outline in the submission
— these items are costless
since they are a "spin-off"
from a properly-written
article. Unusually bulky
detailed layouts and listings,
although not included in the
article, should be submitted,
since they can be made
available separately.
Probably the worst pitfall is putting
off getting started on your article.
Procrastination is the thief of fame
and fortune, even in the modest
amounts offered by BYTE.
47
THE
CURVE TRACER
THAT WON'T
COLLECT DUST.
The Hickok Model 440
semiconductor curve tracer is
all purpose-and convenient to
use. It's the ideal instrument for
testing, evaluating, classifying
and matching all types of
transistors, FET's and diodes.
You'll get stable, full range
dynamic displays that you can
accurately scale right from
the screen.
■ Pull-out card for easy, fast
set-up and operation.
■ Set-up marks for rapid set-up
of 80% of tests.
■ Unique INSTA-BETA display
takes the guesswork out of
transistor and FET parameter
measurement.
■ In-or-out of circuit testing.
■ A full range professional
tracer at a price you can
afford- $1fiC00
AT YOUR DISTRIBUTOR ^JLUil
HICKOK
the value innovator
INSTRUMENTATION & CONTROLS DIVISION
THE HICKOK ELECTRICAL INSTRUMENT CO
10514 Oupont Avenue • Cleveland, Ohio 44108
(216) 541-8060 • TWX: 810-421-8286
TROUBLED BY
TRIGGERED
SCOPES?
The Hickok Model 512 Dual
Trace Oscilloscope eliminates
the set-up and precision
problems you've had to accept
using other triggered scopes.
It's easy to set up
■ Simplified color-coded front panel
controls.
■ Beam finder quickly locates off-scale
traces.
■ Foolproof triggering to 15 MHz.
It gives you superior performance
■ 10 MHz response flat within 3dB.
Excellent pulse response.
■ 3% accuracy on vertical and hori-
zontal ranger.
Hickok industrial lab quality and con-
struction
Glass epoxy PC boards used through-
out. Regulated power supply.
AT YOUR DISTRIBUTOR %}§ O
complete with probes and accessories
HICKOK
the value innovator
INSTRUMENTATION & CONTROLS DIVISION
THE HICKOK ELECTRICAL INSTRUMENT CO.
10514 Dupont Avenue • Cleveland, Ohio 44108
C216) 541-8060 • TWX: 810-421-8286
48
A PRECISION
WAVEFORM
GENERATOR
AT A PRICE YOU
CAN AFFORD.
The Hickok
Model 270 Function Generator
gives you a lot more waveform
generating capability than you'd
expect for its price.
■ Puts stable, calibrated, high
quality sine, square and
triangle waveforms from 1 Hz
to 500 kHz at your fingertips.
■ With external connections
you can produce logic
pulses, sweeps and ramps,
AM and FM outputs, phase
and frequency shift keying
signals, tone bursts and more.
■ Its an audio generator and
much more.
AT YOUR DISTRIBUTOR
$166
oo
HICKOK
the value innovator
INSTRUMENTATION & CONTROLS DIVISION
THE HICKOK ELECTRICAL INSTRUMENT CO
10514 Dupont Avenue • Cleveland. Ohio 44108
(216) 541-80S0 • TWX: 810-421-8286
DIGITAL
PERFORMANCE
YOU CAN RELY ON
The Hickok Model 334 DMM is
a rugged, non-temperamental,
hardworking tool that's easy to
use and easy on your eyes.
Hickok has established a unique
reputation in digital electronics
during the past 10 years. The
Model 334 is another example
of our engineering expertise —
an economical lab quality
instrument with exceptional
durability and accuracy.
■ Easy reading, green
fluorescent display
■ 31/2 digit — auto polarity
■ 26 ranges including 200 mV
AC & DC ranges
■ Fast response —
2.5 readings/sec
Basic Accuracies (% of reading)
DC Volts; ±0.2% (±0.5% on 200V,
1200V ranges)
AC Volts; ±0.5% (±2.0% on
200 mV, 2V ranges)
OHMS; ±0.5%
DC Current; ±1.5%
AC Current; ±2.0%
AT YOUR DISTRIBUTOR
$22900
HICKOK
the value innovator
INSTRUMENTATION & CONTROLS DIVISION
THE HICKOK ELECTRICAL INSTRUMENT CO.
10514 Dupont Avenue • Cleveland, Ohio 44108
(216) 541-8060 • TWX: 810-421-8286
49
utey
o
ASSEMBLER
To date I have not seen
any detail descriptions of
home brew self assembler
systems for microcomputers
such as the 8008, 8080, 6800
or PACE. Maybe Dan
Fylstra's description of
assemblers will start a few
readers off in that direction.
Dan describes in general
terms what assemblers do,
scanning techniques, symbol
tables, hashing methods and
some of the more advanced
"bells and whistles" you
might employ. Use Dan's
article as a source of ideas on
the organization and features
for your own assembler
software designs. . . . CARL
by
Dan Fylstra
14B
550 Memorial Drive
Cambridge
MA 02139
50
If you have done any work
with microcomputers, you
have doubtless seen programs
written in assembly language.
You probably know that
assembly language programs
must be translated into
machine language before they
can be executed on the
computer. The translation is
usually performed by another
program, called an
"assembler." Because
assembly language lets you
write mnemonic (easily
remembered) names for
instructions and data, rather
than binary codes, programs
may be written more quickly
and with fewer errors. The
assembler does the tedious
job of putting together, or
assembling, all of the right bit
patterns to make up the
program in machine language.
Most of the assemblers
presently available for
microcomputers are
cross-assemblers: They run on
big computers or time-sharing
systems, and produce output
which must be loaded in
some way into the
microcomputer system.
Commercial time-sharing
services are expensive, and
the whole point of having a
home computer is to be able
to perform computing chores,
such as program assembly, on
your own system at ultra-low
cost. Since a resident
assembler — one which runs
on your own micro system —
may be unavailable or very
costly, you might be
interested in writing your
own assembler. By doing it
yourself you can learn a lot
about programming and
software design as well as the
specs of your own
microcomputer, save yourself
the cost of program
development, and produce a
customized language suited to
your own needs or fancies.
And who knows? — you
might even find that other
hobbyists or microcomputer
users might be willing to pay
you for a copy of the
assembler program that you
had so much fun writing.
Now, it's only fair to warn
you that writing an assembler
is a big undertaking — you'll
need a fair amount of time
and perhaps some extra RAM
chips to accommodate the
finished product. But such
obstacles have never stopped
anyone with your boundless
enthusiasm. So the only
question is, how do you go
about writing an assembler?
That's the sort of question
that BYTE magazine is
designed to answer, and that's
what this article is all about.
What Does an Assembler Do?
To answer this question,
we have to take a look at
some typical machine
instructions and how they
might be written in assembly
language. A machine
instruction usually consists of
a binary code for some
operation, such as addition,
and one or more binary
numbers denoting the
"operands" of the operation.
The binary number for an
operand may have either of
two interpretations: It may
denote the binary value of,
say, a number, or the ASCII
code of a character, or it may
denote the binary address of
a memory location which
holds the actual value of the
operand. For example, on the
Motorola 6800 the bit
pattern
1000 1011 0011 0000
opcode
operand
means "add the number 48
(00110000 in binary) to the
A accumulator." This might
be represented in assembly
language as
ADDA #48
— note how much more
convenient it is to write
things this way! In contrast,
the bit pattern:
1001 1011 0011 0000
means "add the 8-bit number
found in memory location 48
to the A accumulator." This
might be written in assembly
language as
ADDA BETA
where it so happened that,
just after the last instruction
of a program which was 48
bytes long, the programmer
had also written
BETA RMB 1
meaning "reserve 1 memory
byte at this point, and call it
BETA."
These examples illustrate
the basic functions of an
assembler. In the first case,
the instruction's operand was
the actual number to be
added. (This is often called an
"immediate operand.") The
The assembler does the tedious job of putting
together, or assembling, all of the right bit patterns to
make up the program in machine language.
start at location 0. He
indicated this by means of
the mnemonic RMB, for
"reserve memory byte."
Since this assembly language
statement doesn't actually
represent an instruction, but
instead tells the assembler
what to do, it is often called a
"pseudo-op." The assembler
read the entire program,
counting up the number of
bytes that the subroutine
would take, and determined
that the address of the
take, and furthermore it
doesn't know (yet) that the
memory location BETA is
supposed to be reserved just
after the subroutine, since it
hasn't seen the RMB
pseudo-op."
Forward Reference
Fig. 1 illustrates a problem
common to all assemblers and
compilers, often called the
"forward reference problem."
There is no neat way out of
it. In this case, the
Fig. 1. The Forward Reference Problem
opcode
operand
assembler read the characters
"ADDA" and substituted the
proper binary opcode
1 0001 01 1 , and converted the
decimal number 48 to its
binary equivalent, 00110000.
In the second case, the
instruction's operand was the
address of a memory
location. The programmer
called this memory location
BETA and decided to put it
after the instructions of a
subroutine, which was to
memory location called
BETA was therefore 48, or
00110000 in binary. It
assembled this address into
the instruction.
All well and good. But,
being an alert reader, you ask,
"Wait a minute! What if the
ADDA instruction is in the
middle of the subroutine?
When the assembler reads the
ADDA instruction, it doesn't
know how many bytes the
rest of the subroutine will
programmer could have
reserved the memory location
BETA before the subroutine
rather than after it. But
suppose that the subroutine
had included a "jump" or "go
to" statement:
IMP
NEXT
NEXT ADDA #7
51
A two-pass assembler
solves the forward
reference problem by
reading the program
twice.
It is rather impractical to try
to write every program
without any forward jumps!
There are basically two
ways to cope with this
problem. The first is to read
the program once, but to
keep sections of the program
in memory until all forward
references are resolved. Since
RAM costs us money in a
microcomputer system, we
will reject this approach. The
second alternative is to read
the program twice; an
assembler which adopts this
strategy is called a two-pass
assembler. This approach is
slow, but it's also cheap, and
that's what we want!
The first time that such an
assembler reads the program
(i.e., on the first pass), it
simply I oo ks at the
instruction mnemonics,
counts up the number of
locations that each
instruction will take, and
builds a symbol table in
memory which lists all of the
programmer defined names
for memory locations and
their corresponding addresses.
(We need RAM for this, but
not so much as would be
required for the first
approach.) This process is
(somewhat fancifully)
illustrated in Fig. 2. Notice
that the assembler picks up
only the statement labels,
ignoring (for the purposes of
Pass 1) appearances of the
same symbols in the operand
fields of instructions.
On the second pass, binary
opcodes are substituted for
the instruction mnemonics,
constants are converted to
their binary representation,
and programmer defined
names are replaced by their
actual memory addresses,
found in the symbol table.
This is illustrated in Fig. 3.
Any name appearing in the
operand field of an
instruction which is not
already in the symbol table
on Pass 2 is undefined in the
program, and will cause an
error message. One other
note: looking up the binary
opcode for an instruction
mnemonic is essentially the
same process as looking up
the address for a programmer
defined name, so the symbol
table can be used for both
purposes.
It should be pretty clear
by now that an assembler
spends most of its time 1)
scanning characters, looking
for names, numbers and
punctuation symbols, and 2)
building and searching the
symbol table. If we can find
simple and efficient ways of
performing these operations,
and avoid getting them
hopelessly intertwined with
the rest of the program logic,
we should come out with a
fairly decent assembler. So
let's now take a look at
programming techniques for
scanning and searching
symbol tables.
Scanning Techniques
Our assembler's first task
is to scan the characters
making up an assembly
language program, and find
things such as instruction
mnemonics, constants and
programmer defined names,
while noticing but generally
ignoring such things as
blanks, punctuation symbols
and comments. The amateur
programmer's first impulse
usually is to plunge in by
writing a series of tests and
branches to handle various
Fig. 2. PASS 1 picks up the labels.
sequences of characters which
may appear on a line. This
approach frequently leads to
the type of scanner known as
a "kluge." The computer
scientist, on the other hand,
has nothing but contempt for
this "il l-structu red"
approach, and prefers to
work with regular expressions
or right-linear grammars and
finite automata. We will take
a middle course, outlining
some programming
techniques that will help
make a hand implemented
scanner simpler, smaller and
faster.
The first technique, if you
are designing your own
assembly language, is to make
it simple to scan! An
assembly language statement
usually consists of an
optional statement label
(which then represents the
address of the location into
which the instruction is
assembled), an instruction
mnemonic, an operand field,
and room for comments.
A typical example would be:
Some assemblers require each
element of an assembly
language statement to begin
in a fixed column or
character position of a line,
so that the problem of
locating the elements for
scanning is greatly simplified.
However, this is a little rough
on the assembly language
user, and you will probably
save yourself time in the long
run by implementing a
slightly more complex
scanner. To permit a more
flexible format, one may take
either the "IBM approach,"
in which a statement label
must begin in column 1, an
instruction mnemonic must
be preceded by at least one
blank, and comments are
separated from operands by a
blank; or the "DEC
approach,'' in which
statement labels are followed
by a colon (or other
punctuation symbol), and
comments are preceded by a
semicolon. The "DEC
approach" is somewhat more
EVAL
LDAA
BETA
statement instruction operand
label mnemonic field
BEGIN FUNCTION
EVALUATION
comments
52
Fig. 3. PASS 2 generates code referencing labels.
convenient and less
error-prone for the user, but
is slightly harder to analyze.
For instance, one must be
willing to scan a string of
alphameric characters
followed by blanks, waiting
for a colon or an alphabetic
character in order to decide
whether the string was a
statement label or an in-
struction mnemonic.
Sometimes a decision as to
what to do next must be
made on the basis of the type
of the next (non-blank)
character. If several
alternatives are possible, one
would like to use a "jump
table," or an array of branch
addresses indexed by the
character code, instead of a
sequence of character
comparisons. But the ASCII
character set allows for 128
different character codes, of
which only about 45 are used
in assembly language
statements. Hence, a common
technique for complex
scanning problems is to first
translate from ASCII to a
more convenient set of
character codes, using a 128
byte character translation
table. The new character
codes can be chosen so as to
facilitate the use of jump
tables at other points.
The elements of an
assembly language statement
(names, mnemonics and
constants) generally consist
of variable length character
strings, separated by a
variable number of blanks.
Present-day computers,
however, are more adept at
handling fixed size objects
such as bytes or words. So
the most important technique
you can use to keep your
scanner coherent is to write a
"next token" routine, which
scans off an alphameric
string, a constant (e.g., a
string of digits) or a
punctuation symbol each
time it is called. This routine
should return a code for the
type of item or token just
scanned (say, 1 for
alphameric strings, 2 for digit
strings, 3 for a colon, 4 for a
comma, and so on), and a
fixed-size descriptor giving
the address of the first
character and the number of
characters in the string.
Fig. 4 illustrates
descriptors for the statement
label, instruction mnemonic,
and operand of a typical
assembly language statement.
Descriptors for character
strings are handy for a
number of pu rposes.
Character string move and
comparison routines can be
written which take two
descriptors as arguments.
Output I ines can be
constructed from a sequence
of descriptors, and error
messages can also be handled
in this way. By storing the
fixed-size descriptors in the
symbol table and the
character strings themselves
in another area, you can
avoid the arbitrary restriction
on the length of names to six
or eight characters found in
many assemblers.
Even more important, the
Fig. 4. Descriptors Identify Text Tokens in a Line of Characters.
f— length
■ — location
II I
4
302
1
4
308
1
1
r "
<»
m
(0
r»
00
1 o
o
o
o
o
o
{*> 1
1 o
("5
m
M
M
m
CO
use of a "next token" routine
separates the details of
scanning individual characters
from the problem of deciding
how to process each element
of a statement. The symbol
table routines described
below similarly separate the
details of identifying
particular names and
mnemonics from the other
problems of processing. These
are examples of the use of
modularity and hierarchical
structure to organize the
solution of a complex
problem.
Enough in the way of
generalizations and
philosophy; let's get on with
an example to see how all this
works. Fig. 5 shows the flow
of information from a
character code translation
routine, to a next token
routine, to a routine which
determines the type of
statement from the
instruction mnemonic using a
symbol table lookup
subroutine. Assembly
language for the Intel 8080
has been used in this
example. Lower case letters
are translated to upper case,
and the codes for digits (0-9)
and letters (A=10, B= 1 1 , . . .,
1
315
1
■a-
53
Fig. 5. Typical (8080) Character Translate and Next Token Routines
STATEMENT
TYPE
DETERMINATION
ROUTINE
CHARACTER
CODE
TRANSLATION
ROUTINE
LOOP:
BRTAB:
LETTER:
SCAN:
'NEXT TOKEN"
ROUTINE
SYMBOL
TABLE
LOOKUP
ROUTINE
CHARACTER TRANSLATION ROUTINE
MVI
LXI
MVI
LDAX
MOV
MOV
STAX
I NX
DCR
JNZ
H, TABLE
D, LINE
C,72
D
L,
A,
D
D
C
LOOP
A
,M
H -» page holding table
DE ■» begin of line
C = length of line
get next char of line
L = character code index
A = table entry at index
replace char in line
advance to next char
reduce no. chars remaining
loop for all 72 chars
'NEXT TOKEN" ROUTINE
LXI
LDAX
RLC
MOV
MVI
DAD
PCHL
JMP
JMP
JMP
JMP
XCHG
SHLD
MVI
MVI
INX
INR
CMP
JP
LXI
MOV
BRTAB
H -• branch table base
get translated char from line
times 2 for branch table index
set up 16-bit index
in registers B and C
add to branch table base
jump to appropriate routine
LETTER
DIGIT
COLON
COMMA
DESCR + 1
A, 36
C,0
H
C
M
SCAN
H, DESCR
M, C
HL -> begin of alpha string
put start addr in descriptor
max translated code for alphameric
initialize count of chars in string
advance to next character
increase character count
code < max for Alphanumeric
continue scan if so
HL * length part of descriptor
put in no. chars in string
Z=35) are chosen so that
alphameric and digit strings
can be scanned off using a
single comparison for each
character. Note the use of a
jump table "BRTAB" to
select the appropriate
handling routine for the next
character in the next token
routine. Descriptors are
returned to the statement
type determination routine,
and are passed on to the
symbol table lookup routine
which uses them in character
comparisons. The problem of
distinguishing statement
labels followed by a colon is
handled easily at this level:
The next token is obtained,
and its descriptor is saved; the
next token is obtained, and
its code is tested; if a colon
has been found, the saved
descriptor is passed to the
symbol table lookup routine,
and two more tokens are
obtained to balance things
out before the instruction
mnemonic is processed.
Symbol Tables
The greatest convenience
that an assembler provides for
the programmer is the ability
to give names to memory
locations and to refer to
those names from other
points in the program. The
assembler determines the
proper address of the
memory location, and fills in
the address wherever the
name is referenced.
The assembler
accomplishes this by building
a symbol table on its first
pass. Each entry of the
symbol table contains a
programmer defined name in
character string form, and the
binary address corresponding
to it. In addition, the symbol
table may contain other
character string names, such
as the instruction mnemonics
or assembler pseudo-ops. The
entry for an instruction
mnemonic would contain the
corresponding binary opcode,
and the entry for a pseudo-op
might contain the address of
a processing routine in the
54
Fig. 6. An Array Symbol Table.
4
5
3
A
B
C
T
H
E
T
A
N
E
X
T
assembler itself. For a
computer with several
different instruction formats,
the entry for an instruction
mnemonic might also contain
a type code indicating the
proper format for this
instruction, the number of
operands expected, and the
interpretation of the
operands as addresses or
values.
The simplest way of
organizing the symbol table
would be as an array of
descriptors and address
words, as illustrated in Fig. 6.
Entries are added sequentially
to the array during Pass 1.
and a sequential search of the
whole array is used to find
the addresses of
programmer defined names
during Pass 2. (Each
descriptor from the table is
passed in turn to a character
comparison routine, along
with the descriptor for an
operand. The comparison
fails immediately if the string
lengths in the descriptors
were unequal.) This type of
organization has the great
virtue of simplicity, and is
probably adequate for a first
version of your own
assembler. As the programs to
be assembled get longer,
however, the asembler will
spend an increasing fraction
of its time searching the
symbol table. A faster way of
searching the table is needed.
Think about how y'ou
would go about such a search,
if you were the assembler.
What do you do when you
open a dictionary or a
telephone book? Knowing
the order of the alphabet and
the thickness of the book,
you look at the first character
or two of the word, you
make a guess at the
approximate page, open the
book to that page, and begin
searching from that point.
Let's have the assembler
do the same sort of thing. We
will divide up the table into
twenty-six sections, one for
names beginning with each
letter of the alphabet. We
know the starting address of
each section of the table (we
can make a small array of the
twenty -six starting addresses),
so to look up a name, we
look at its first character, go
to the appropriate section
and search just that section
rather than the whole table.
This approach is depicted
in Fig. 7.
This is a good first try, but
there are some drawbacks. In
a program called "assembler,"
say, you might have a lot of
names beginning with A,
while in a program called
"editor," you might have
many names starting with E.
On the other hand, your
friend Zaborowski might start
all of his names with Z.
Should all of the sections be
of the same size? If not, how
do you know (at the
beginning of an assembly)
which sections to make
larger? If a section becomes
filled, we can simply add the
extra names to the next
section of the table; now,
Fig. 7. An Alphabetically Indexed Symbol Table
'ALPHA'
'ADDA'
'BETA'
'CAT
'CRADLE'
'CALL'
'ZABOROWSKI'
55
What happens if we use
a random assortment of
the names, placing
them haphazardly into
the various sections of
the table?
however, if a name to be
looked up on Pass 2 is not
found in its original section,
most of the following section
will have to be searched
before the name is found.
This phenomenon is called
"clustering." Your friend
Zaborowski is especially
likely to run into this
problem, and even if you
make the Z section large
enough, searching the symbol
table will take just as long
using the new approach as it
did with the old one.
Can we overcome these
drawbacks of the new
method? Here's where a little
lateral thinking will help. We
are making use of our
knowledge of the ordering of
the alphabet. Try the
opposite approach: What
happens if we use a random
assortment of the names,
placing them haphazardly
into the various sections of
the table? At first this sounds
absurd, but on closer
examination we realize that it
solves the problem! The
problem arose because people
are fairly likely to choose a
set of names which are
related in the alphabetic
ordering; by using a randomly
chosen ordering, we can
minimize the likelihood that
a large number of symbols
will be placed in a single
section of the table. This
technique, which is called
"hashing" or ' 'hash
addressing" for obvious
reasons, is used in most
modern assemblers and
compilers.
So, instead of using the
first character of a name to
select the proper section of
the table, we will use a
random assortment of bits, or
an arbitrary function of the
bit pattern of the entire
name, to select a starting
point in the table. A function
of this sort is called a "hash
function". So long as the
function's possible values are
evenly distributed over the
range of addresses for table
entries, the problem of the
"clustering" or grouping of
names will be minimized.
An example of a hash
function which usually gives
good results is to add
together all of the bytes of a
character string, ignoring
overflow, or else to
"exclusive or" the bytes
together.
Similarly, in order to
minimize the clustering of
names which hash to the
same starting address, we can
"re-hash" the names so as to
randomly distribute them
around the table. Such a
method is called a "random
rehash." The following
method is easy to implement,
efficient, and works well
when the table size is a power
of 2, say 2**fc (see Morris):
Suppose a name initially
hashes to table entry h, which
is already occupied by
Fig. 8. Hashing Symbol Table Descriptors.
DESCRIPTORS
another name. Initialize a
variable R to 1 . To rehash the
name:
1. Set R = R*5 (shift left
two bits, and add to the
original number).
2. Mask out all but the
low-order k+2 bits of R, and
save this as the new R.
3. Shift R right 2 bits and
add it to h to get the next
table entry h. If this entry is
occupied, rehash the name
again.
To find a name in the
table during Pass 2, we simply
hash and rehash in exactly
the same way, this time
comparing each table entry h
against the name to be found.
The remarkable fact about
this algorithm is that the
number of comparisons
needed to find an entry, on
the average, depends only on
how full the table is and not
on how large it is. Even when
the table is 90% full, only
about 2.56 comparisons will
be needed, on the average. In
contrast, for a nearly full
table of 512 entries, the
sequential search method
described earlier would take
an average of 256
comparisons to find a name,
or about 100 times as long!
Random rehashing is
illustrated in Fig. 8. The first
name to hash to table entry
12, for example, would be
stored there, while the next
name whose hash function
value was 12 would be
rehashed to table entry 13,
and the next one would be
rehashed twice and finally
stored in table entry 3.
We have only described
one method of hashing here;
several other variations are
possible. The most important
of these is called "hashing
with overflow chaining," in
which all of the names which
hash to the same starting
address are chained together
on a linked list. This method,
which is often used on large
computers with dynamic
storage allocation, is less
suitable for microcomputers
because it requires an extra
56
address field for each symbol
table entry. The references at
the end of this article can be
consulted for a more
complete discussion of
hashing.
Now that you have
become acquainted with
some of the basic
programming techniques used
for scanning and searching
symbol tables, you're about
ready to start writing your
own assembler! You might
want to actually try this,
using the simplest techniques
outlined in this article:
Perhaps a fixed-column
scanner and a sequentially
searched symbol table for a
first version. Very often,
when it comes to actually
getting a program up and
running, the simple-minded
approach turns out to be the
one that works best. Once
you've got a basic assembler
working, you can consider
adding some of the features
that we'll discuss next.
More Assembler Features
Up to this point, we have
been concerned with only the
basic functions of an
assembler: The conversion of
Very <
jften, when it
comes
to actually
getting
a program up
and
running, the
simp
1 e - m i n d e d
approach turns out to
be the
one that works
best.
mnemonics and
programmer defined names to
instruction opcodes and
addresses. Many other
features can be added to an
assembly language to make it
even more convenient for
programming. Some of the
more useful features of this
kind will be considered here.
Defining Constants
Most assembly languages
have pseudo-ops which direct
the assembler to reserve one
or more locations containing
constant values. For example,
the Motorola 6800 assembly
language has a pseudo-op
FCB, for "form constant
byte." An example of its use
would be
FCB 23,$FA
which would reserve two
bytes containing 00010111
(23 in decimal) and
111110 10 (FA in
hexadecimal or base sixteen).
Sometimes an instruction
takes its operand in a
memory location (rather than
as an "immediate" operand),
but the operand itself is
actually a constant. Instead
of writing
ADDA THREE
THREE FCB 3
we would like to be able to
write
ADDA =3
and have the assembler
automatically reserve a
memory location containing
3, and assemble its address
into the instruction. Such an
instruction operand is called a
"literal." On machines where
some instructions can address
only a limited range of
memory locations, this
feature may be difficult to
implement.
Equivalences
It is often convenient to
be able to define a symbol
with a constant value, or with
the same value as another
symbol. For example, a
constant representing, say,
the size of an array, may be
used at several points in a
program. By using a symbol
in place of the constant
throughout the program, and
defining the symbol's
constant value at the
beginning of the program, we
can make it easier to change
the size of the array when
producing a new version:
Only the symbol need be
redefined, and its new value
will be substituted at the
appropriate points by the
normal process of assembly.
(This is called "parameter-
izing" the program.) This
feature is not too difficult to
implement, and most
assemblers have a pseudo-op
such as
SIZE EQU 25
which allows us to write
LDAA #SIZE
ARRAY RMB SIZE
or, in general to use the
symbol SIZE wherever the
constant 25 could appear.
Expression Evaluation
Besides defining constants
and constant-valued symbols
in a program, it is frequently
useful to be able to combine
such elements into arithmetic
expressions whose values can
be computed at assembly
time, and to use those values
in place of other constants.
For example, the same
program with a parameter
SIZE for the size of an array
might include statements
such as
ADDA #SIZE-1
SPACE EQU 3*SIZE+1
which would specify (for
SIZE=25) that 24 should be
added to the A accumulator,
and that SPACE should have
the constant value 76
wherever it appears in the
program.
It is remarkably easy to
evaluate expressions of this
kind, taking account of
parentheses and the normal
precedence of arithmetic
operations. An algorithm to
perform the evaluation of
such expressions will be the
subject of an article in a later
issue of BYTE; if you are
impatient, you can consult
Mealy or Gries (see the
references).
Conditional Assembly
We saw how a program
could be parameterized by
the use of equivalenced
symbols and arithmetic
expressions. Sometimes a
program can be
parameterized in another
way: Entire sections of the
program can be included or
omitted, depending on the
values of certain parameters.
For example, if the maximum
value of a certain variable is
less than 256, it can be stored
in a single byte on most
machines; but if the
maximum value is 256 or
more, two bytes or a word
must be used. Thus we might
wish to write something like
ARRAY
ARRAY
.IF
MAXVAL LT 256
RMB
SIZE
.END
.IF
MAXVAL GE 256
RMB
2*SIZE
.END
57
with the intent that, if an
earlier EQU pseudo-op had
defined MAXVAL as, say,
200, the first RMB statement
would be assembled, while if
MAXVAL had been defined
as, say, 400, the second RMB
would be assembled.
This feature is not too
difficult to implement, and it
is extremely useful. The
assembler must simply
recognize the .IF and .END
pseudo-ops, evaluate the
relations, and skip the
intervening text on both
passes if the relation is false.
It is easy to imagine (but
somewhat more difficult to
implement) extensions to this
feature, such as the repetitive
assembly of certain program
segments.
Macros and Relocation
The most sophisticated
assemblers are comparable to
compilers in complexity, size
and versatility. Some
assemblers implement a
macro facility, which enables
the programmer to define
new instruction mnemonics
which are replaced by
parameterized sequences of
assembly language statements
wherever they appear in the
program. When combined
with features for conditional
assembly, a macro facility
provides a powerful tool for
extending an assembly
language to suit it for a
particular application.
We have discussed only
absolute assemblers: We
began by assuming that the
program was to be assembled
starting at location 0 (or
some other fixed location).
When the program is going to
be loaded into memory along
with other, previously
assembled programs,
however, we don't know how
big the other programs are or
in which order they will be
loaded. In this case it is
necessary to put out
relocation information along
with the assembled program,
which says, in effect, "If you
load this program at location
m, you should add the
number m to the following
bytes or words in order to
make the addresses come out
right." This relocation
information is processed by a
loader, which is responsible
for loading all of the related
programs into memory.
While both of these topics
are interesting and very
important, many pages would
be required to do them
justice and this article is
pretty long already! So we'll
content ourselves with the
topics already discussed. By
this time, you probably have
either decided that writing an
assembler is too much work,
and have stopped reading this
article, or else you have
found the whole idea very
intriguing and are looking
forward for the last word. So
here it is: Now that you
know how to write an
assembler, why not get out
and give it a try? You have
nothing to lose but your
innocence about the
complexities of system
software, and perhaps a little
of your time.
Good luck!
Now that you know
how to write an
assembler, why not get
out and give it a try?
References
Barron, D. W. Assemblers
and Loaders. American
Elsevier (Computer
Monograph Series, No. 6),
New York, 1969.
The most complete,
readily available text on the
design of assemblers and
loaders; also describes
one-pass assemblers and
meta-assemblers.
Gries, David. Compiler
Construction for Digital
Computers. Wiley, New York,
1971.
A highly recommended
text on compiler design:
Covers both the theoretical
and practical aspects of the
problem. Includes a good
discussion of hashing and
more sophisticated methods
of scanning.
Mealy, George. "A
Generalized Assembly System
(Excerpts)," in Saul Rosen
(ed.), Programming Systems
and Languages. McGraw-Hill,
New York, 1967.
A classic paper by one of
the pioneers of language
translators and operating
systems. Presents the idea of
descriptors for character
strings as well as many other
innovations.
Morris, R. "Scatter
Storage Techniques, " in
Communications of the ACM
11:1 (January 1968), pp.
38-44.
One of the best general
surveys of hashing
techniques; includes a good,
brief description of hashing
with overflow chaining.
58
RlGS ELECTROINlflCS
DISCOUNTS: 10% OFF ORDERS OVER $25.00; 20% OFF ORDERS OVER $250.00.
SPECIAL
1-8008
8-2102
ANOTHER POWER SUPPLY . . .
PS 25-1 0 to 25v 1a lab type power supply with adjustable current
limiting; remote sensing & remote programming for voltage & current.
Insturctions included. All parts except chassis, meter(s), p.c. board.
Kit of parts with schematics. S14.95
P.C. boards available, No. 007 $3.00 ea.
2K RAM BOARD KIT. ALL
PARTSINCL. SOCKETS
$84. 50
ICs
8008 MICROCOMP. CHIP$30.95
2102 1K STATIC RAM 3.00
5203 256x8 PROM 15.00
5204 512x8 PROM 25.00
INFO ON ABOVE CHIPS IF
ASKED FOR.
ORDERS OF $50 OR
MORE GET FREE BYTE
SUBSCRIPTION IF ASKED
FOR (CONTINENTAL U.S.
ONL Y).
008A MICROCOMPUTER KIT
8008 CPU, 1024 x 8 memory; memory is expand-
able. Kit includes manual with schematic, program-
ming instructions and suggestions; all ICs and parts
supplied except cabinet, fuses & hardware. Includes
p.c. board. $375.00
MANUAL ONLY, $25.00
(no discount on manual)
008A-K ASCII keyboard input kit. $135.00
008A-C Audio cassette adapter kit. $100.00
Details on computer, peripheral kits in our flyer.
RGS ELECTRONICS
3650 Charles St., Suite K ■ Santa Clara, CA 95050 ■ (408) 247-0158
We sell many ICs and components not listed in this ad. Send a stamp for our free flyer. TERMS OF SALE:
All orders prepaid; we pay postage. SI .00 handling charge on orders under SI 0.00. California residents please
include sales tax. Please include name, address and zip code on all orders and flyer requests. Prices subject to
change without notice.
59
TERMS AND ALL THAT STUFF:
ADD 50* TO ORDERS UNDER $10.
CALIFORNIANS ADD TAX. ITEMS
IN THIS AD SHIPPED POSTPAID.
SORRY, NO COD ORDERS TAKEN.
BILL GODBOUT ELECTRONICS
BOX 2355, OAKLAND AIRPORT, CA 94614
FLYER HYPE: THIS AD SHOWS
ONLY THE TIP OF THE ICE-
BERG. SEND US YOUR NAME, A
STAMP, AND YOUR ADDRESS TO
RECEIVE OUR FREE FLYER.
NOW, , .CALL (415) 357-7007, 24 HOURS A DAY, TO FLACI MASTERCHARGE OR 3ANKAMERICARD ORDERS
610O
Several months ago, in conjunction with
Solid State Music, we put our our first
computer type kit — a 'tK by 8 bit memo-
ry board. The response has been great;
but it's time to move on to newer and
bigger things, so we're closing out the
ones we have left. Compatible with the
MK-8 and other micros; supplied with a
86) pin standard edge connector, sockets
for all ICs; features plated - through
holes, proper bypassing, flexible ad-
dressing, and more. Board is 6i" x 9i".
61.5Q
641.95
DIP SWITCH -- These programming
switches have 7 miniature SPST
switches per DIP package. Ideal
for computer/digital hobbyists.
Thought you couldn't afford to wire wrap?
Think again. Cordless for convenient op-
eration. Complete with rechargeable bat-
teries, charger, bit, and instructions;
ready to go as soon as the batteries are
charged.
"2102" 1024 X 1 BIT RAM -- SINGLE +5 VOLT SUPPLY; STATIC OPERATION; FAST ACCESS. $1,95
lC "8008" 8 BIT MICROPROCESSOR -- POPULAR 8 BIT PROCESSOR IC. $27.95
V^5 "5203" ERASEABLE ROM -- ORGANIZE AS 4 X 512 OR 8 X 256 BIT MEMORY. STATIC AND NON-VOL-
ATILE; FULLY PROGRAMMABLE AND ERASEABLE. NO CLOCK OR REFRESH REQUIRED. $14.50
<3*A povamw
available
We can program your 5203s, 1702s, and
other ROMs for $7.50 a piece, or 10/
$35.00. Call our 24 hour phone line
to request hexadecimal coding forms.
00^22 Hfe
This is a flat, multiconductor wire,
available in multiples of 10 conduc-
tors up to 100 conductors. Comes in
20 ft. lengths only. Cost is If per
conductor foot; for example , a 20
conductor cable 20 ft. long = $4.00
MHIIM
NOM-VOLATILE STORAGE
-—Lithium Core
— -750 Ns Full Cycle Time
---350 Ns Access Time
—3 Wires: X & Y Drive,
Sense/Inhibit Lines
---Diode Decode Matrix On
Board; Prints Supplied
For Drive Electronics
And Sense Amps
—For 8 & 16 Bit Machines
& stocks #
docfcef
W^^SiL
We made a special purchase of PC mount
soldertail sockets, including discon-
tinued types and some that need higher
than spec insertion force. Brand new
from a leading manufacturer of quality
IC sockets.
(G)=gold plate contacts (T)=bright tin
T 14 pin 11/$1.95
G 14 pin 10/$1.95
T 24 pin 5/$1.95
T 28 pin 5/$1.95
T 40 pin 5/$2.95
Low profile type sockets:
G 16 pin 10/$1.95
G 40 pin 5/$2.95
————————
—————————————————
GOOD LUCK, BYTE WE'RE GLAD TO SEE A MAGAZINE FOR THE COMPUTER CROWD!
CAVE
Tri-share is a trademark of National Semiconductor
—————————■■■—>■■■■■■■>■■■■>———————
I— — — — «
•
WE ARE PROUD TO OFFER THIS EXCITING IC TO THE COM-
PUTER ENTHUSIAST. IT'S A 10 PIN DIP WITH TRI-SHARE
AND A POWERFUL INSTRUCTION SET. FAST AND EASY TO
PROGRAM; HAS ASSEMBLER 8 EDITOR READILY AVAILABLE.
FROM NATIONAL SEMICONDUCTOR, "THE SECRET MICROCOM-
PUTER COMPANY".
AVAILABLE SEPT. 1 - $125
BELOW IS AN ARTIST'S CONCEPT OF THE MICROCOMPUTER
KIT WE'VE WRAPPED AROUND OUR PACE CHIP. YOU'LL AP-
PRECIATE THE 7 SEGMENT READOUTS FOR EASY OCTAL DE-
BUGGING ON BOTH ADDRESS AND DATA, AS WELL AS THE
INTEGRAL AUDIO CASSETTE AND SERIAL/TELETYPE INTER-
FACES... PLUS 2K BYTES OF INTEGRAL MEMORY.
WE DO, HOWEVER, NEED A NAME FOR THE BEAST. SEND
US YOUR IDEA— IF WE USE IT, YOU WIN A FREE KIT.
A\AIL. SEPT. 1- Write for details!
DECIPHERING
• • • • •
S A N ;
MYSTERY KEYBOARDS
Did you ever wonder about the use of surplus keyboards
for use in your system? Here is an article describing one way
to analyze such a keyboard — illustrated by a particular model
which is available through one of BYTE's advertisers. Do you
use a surplus keyboard already? This is one of the most
common and usable of surplus subsystems — I'd like to see a
few reader submitted articles on use of various keyboards
available in surplus channels. . . . CARL
by
Carl Helmers
Editor, BYTE
One of the best sources of
input data for your home
brew computer system is the
typewriter style keyboard
device. A decent keyboard
will give you the ability to
enter parallel character data 8
bits at a time. The typical
keyboard input devices will
also include a flag of some
sort to indicate that a key has
been pressed. It might also
include an "acknowledge"
line to be pulsed after the
computer had read the data.
The parallel interface of a
typical keyboard is illustrated
in Fig. 1. Fig. 1 is a typical
interface of a keyboard, and
is used only as a guide to the
analysis of an actual
keyboard later on in this
article.
The manual input of the
keyboard is its most
important feature. It is the
human operator's depression
of a selected key which
communicates some
information to your system.
When the key is depressed, it
causes the keyboard input
device's logic to generate an
encoded binary pattern for
the key. This encoded binary
pattern is typically an ASCII
character code presented on
the data lines DO to D6. In
addition to the encoding
function, the keyboard has
logic which produces a "flag"
signal to indicate that some
key has been depressed. This
flag is either a pulse (see
timing diagram example in
Fig. 1 ) or a level state,
depending upon the
particular keyboard design
involved. It is often the case
(but not required) that the
keyboard is designed for
interactive control by the
computer processor. In such
cases, an "acknowledge"
62
signal must be generated by
the computer and sent back
to the keyboard to reset the
logic of the keyboard input
device.
The encoding pattern of
the keyboard input device
depends upon the
manufacturer's design and
must be determined for a
surplus keyboard before you
can use it. For many
keyboards, the ASCII pattern
of Table I is applicable —
each key maps into one of
the 7-bit patterns listed.
Unless stated by the dealer,
you will have to approach the
analysis of the surplus
keyboard without any
assumptions: it is likely to be
ASCII but . . . you could
wind up with a Univac
' ' F ieldata " encoded
keyboard; you could wind up
with an IBM EBCDIC
keyboard, etc. Many
non-standard encoding
schemes for alphanumeric
keyboards are derivatives of
ASCII. Thus the example in
this article is chosen with an
ASCII encoding scheme in
mind. (IBM surplus is rarely
in usable form and the
number of EBCDIC
keyboards by non-IBM
manufacturers is an unknown
but assumed small number.)
In Table I, the common
character codes are shown in
a typical graphic form as well
as in binary, octal and
hexadecimal representations.
Now a new keyboard fully
encoded for ASCII and/or
EBCDIC is one option you
have for implementing a
keyboard input device. For
example, a new commercial
keyboard will typically sell in
the $50 to $150 range
depending upon options — a
keyboard with a standard
typewriter style layout and
an LSI encoding method. As
a second example, Southwest
Technical Products Corp.
used to sell a hobby quality
keyboard at about $40 in kit
form. The advantages of new
keyboards are obvious: you
get the complete description
of the hardware along with
the product — and an
interface which will be similar
to the one described in Fig. 1.
With the newer LSI encoded
boards, you will probably get
a keyboard with an "n" key
rollover feature to decipher
multiple key strokes which
overlap in quick succession.
This is all well and good, but
is there a less expensive
alternative? The answer of
course is "Yes", and the
remainder of this article
concerns the techniques
involved.
Using Surplus Keyboards
The alternative to new
equipment is "pre-owned"
equipment, to borrow a term
from standard used car
dealers' lexicon. Since
computers have been in use
for a number of years there is
a fairly wide selection of
equipment in the "surplus"
market, as you can find out
by reading the advertising
pages of BYTE. An item
which is frequently found in
surplus vendors' offerings is
the keyboard input device.
Prices for keyboards vary
considerably — from $10 for
real "junk" to about $40 for
premium keyboards. The use
you can get out of such a
surplus board ranges from a
complete subsystem ready to
hook up — to a mere array of
key switches which must have
a new set of encoding logic to
make it work.
The keyboards you
employ for this purpose must
be selected and analyzed on
an individual basis — there is
no stock formula applicable
to all such keyboards. Several
rough guidelines will help
you keep out of too much
trouble:
1. Always look for a unit
which is in sound physical
condition. Get one which has
the cleanest possible key
tops, smoothly working keys,
little sign of "hack"
modifications to PC circuits,
etc. Verify that the keyboard
is a "switch" type — Hall
effect or capacitive keyboards
exist and should be avoided
without proper
documentation.
2. The most desirable
keyboard will be one in
which the encoding logic is
readily decipherable. This will
invariably be the case with
diode matrix keyboards (see
text below) — and may be
possible if an LSI chip with a
standard part number is
utilized.
3. The most desirable
keyboard will be one on
which the PC layout people
have made notations of nice
little comments like "+5V",
"-12V", "VCC", "A", "$",
etc. These are great aids to
figuring out the operation of
the devices.
If you (at a minimum)
satisfy the first criterion
above, the keyboard will
ultimately be usable,
provided it uses actual
keyswitches, since you can
always construct a switch
scanner and/or diode matrix
to encode the switches as
ASCII binary information.
Diode Matrix Keyboard
Analysis — An Example
To illustrate what can be
done with surplus keyboards,
the remainder of this article
concerns the analysis of a
particular keyboard input
device. The keyboard in
question has been advertised
recently, and is a fairly
typical diode matrix encoded
ACKNOWLEDGE +
1
LSB
KEYBOARD
INPUT
DEVICE
MSB
FLAG +
DO
Dl
D2
D3
D4
D5
D6
TIMING (TYPICAL):
HUMAN FINGER
y
FLAG
rap
ACKNOWLEDGE
-it
COMPUTER
-RESPONSE-
TIME
Fig. 1. Typical keyboard functions.
63
The keyboard, with
bottom plate removed and
encoder board out in the
open. The encoder printed
circuit is separated from
its mounting on the
bottom plate but is still
attached by its wiring
harness.
KEYBOARD
HOUSING
OUTPUf
TERMINALS
BYPASS
CAPACITOR
KEYBOARD
ENCODER
P.C.
INTEGRATED CIRCUITS
DIODE MATRIX
keyboard of the 1966-1970
vintage. This keyboard is a
surplus Sanders Associates
Model 722-1 subsystem,
which comes enclosed in a
metal housing with a fairly
typical Teletype style key
layout. On the right hand side
of the keyboard is a set of
special function keys, which
obviously had some meaning
in the original system using
the device.
The keyboard and housing
can be used "as is" in your
system — with the only
necessary modifications being
the substitution of an
interface plug and cable
which can mate with your
own equipment. The example
of analyzing and figuring out
this keyboard can be used as
a guide to similar work with
other surplus keyboards.
Start at the Beginning
The object of this project
is to determine the details
needed to make the Model
722-1 keyboard work — but
without any original design
documentation from the
manufacturer, since it is
surplus. The first step is to
put on your Sherlock Holmes
cap, crank up your deductive
powers and begin
disassembling the keyboard.
In order to analyze the
circuit, a likely place to start
is the bottom cover plate. In
the case of the 722-1, four
screws hold the cover plate to
the bottom of the housing.
Upon opening the cover
plate, the 722-1 will be found
to have a printed circuit
board attached to the plate —
a thin plastic sheet glued to
the cover plate prevents
inadvertent shorting of PC
conductors. The PC should be
removed from the cover plate
by unscrewing the four nuts
securing it. The result will be
a PC board hanging out the
back of the housing/keyboard
assembly by its wiring
harness.
The actual process of
analysis of a keyboard such as
this will probably take you an
evening or so. The key
features to look for in a diode
matrix encoder keyboard are
identified in the photo.
Keyboard Encoder PC.
The typical diode matrix
keyboard will have a printed
circuit board containing a
large number (approximately
100-200) of computer diodes
and several integrated
circuits, with individual wires
running from keyswitches to
the PC. Sometimes the
functions of encoding and
control logic will all be
mounted on the same printed
circuit as in this example.
Occasionally, the logic will be
split up into smaller chunks
on separate boards.
Wiring Harness. A
keyboard is easy to figure out
if you can get at it "live"
(under power). In this case, a
wiring harness allows
considerable room for
extension so that the key
switch matrix and housing
can be separated from the
encoder board.
Diode Matrix. The way to
tell a diode matrix board is
by the regular array of diodes
found at some point. In this
example, the array is at the
lower right in the photo.
While the array is regular, the
actual printed wiring is fairly
random — although it will
ultimately condense down
into a set of bit busses.
Integrated Circuits. This
particular keyboard has a
bunch of integrated circuits
in the left hand portion of
the encoder board. The photo
illustrates arbitrary reference
numbers U1 to U12 for the
purposes of this article, since
no references were built into
the printed circuit board.
Pull up Resistors. In diode
matrix boards, a set of
negative logic "wired or"
busses is used to generate
each bit of the encoded
binary word. One pullup
resistor (typically 1000
Ohms) is associated with each
bus line.
Identifying the Power
Requirements
One of the most critical
items to be determined in
figuring out a keyboard is to
identify the power
requirements. The best way is
64
Binary
Octal
Hex Common "Graphics"*
0000000
000
00
NUL character
0000001
001
01
0000010
002
02
0000011
003
03
00001 00
004
04
0000101
005
05
0000110
006
06
00001 1 1
007
07
Bell - Ring the Bell!
0001000
010
08
0001001
011
09
0001010
012
OA
LF — Line Feed
0001011
013
OB
0001100
014
OC
0001101
015
OD
CR — Carriage Return
0001110
016
OE
0001111
017
OF
0010000
020
10
0010001
021
11
0010010
022
12
0010011
023
13
0010100
024
14
0010101
025
15
0010110
026
16
001 01 1 1
027
17
0011000
030
18
0011001
031
19
0011010
032
1A
0011011
033
1B
ESC — "Escape"
0011100
034
1C
0011101
035
1D
0011110
036
1E
0011111
037
1F
0100000
040
20
SP — Space
0100001
041
21
! — Exclamation
0100010
042
22
" - Quotes
0100011
043
23
#— Number Sign
0100100
044
24
$- Dollar Sign
0100101
045
25
% — Percent
0100110
046
26
& — Ampersand
0100111
047
27
' — Apostrophe
0101000
050
28
( - Left Paren
0101001
051
29
) - Right Paren,
0101010
052
2A
* — Asterisk
0101011
053
2B
+ — Plus sign
0101100
054
2C
, — Comma
0101101
055
2D
Minus Sign (hyphen)
0101110
056
2E
. — Decimal (period)
0101111
057
2F
/ - Slash
01 1 0000
060
30
0
0110001
061
31
1
0110010
062
32
2
0110011
063
33
3
0110100
064
34
4
0110101
065
35
5
0110110
066
36
6
0110111
067
37
7
0111000
070
38
8
0111001
071
39
9
0111010
072
3A
: — Colon
0111011
073
3B
; — Semicolon
0111100
074
3C
< — Less than
0111101
075
3D
= — Equality
0111110
076
3E
> — Greater than
01 1 1 1 1 1
C77
3F
? — Question Mark
Table I. Binary, Octal
and Hexadecimal ASCII
Codes, This table contains
common symbols for
keyboard characters
and the corresponding
ASCII codes.
Binary
Octal
Hex
Co
mmon "Graphics"*
1000000
100
40
@.
- "at"
1000001
101
41
A
1000010
102
42
B
1000011
103
43
C
1000100
104
44
D
1000101
105
45
E
1000110
106
46
F
1000111
107
47
G
1001000
110
48
H
1001001
111
49
I
1001010
112
4A
J
1001011
113
4B
K
1001100
114
4C
L
1001101
115
4D
M
1001110
116
4E
N
1001111
117
4F
0
1010000
120
50
P
1010001
121
51
Q
1010010
122
52
R
1010011
123
53
S
1010100
124
54
T
1010101
125
55
U
1010110
126
56
V
1010111
127
57
w
1011000
130
58
X
1011001
131
59
Y
1011010
132
5A
z
1011011
133
5B
[-
Left bracket
1011100
134
5C
\-
Reverse slash
1011101
135
5D
] -
Right bracket
1011110
136
5E
1011111
137
5F
-
Underscore
1100000
140
60
1100001
141
61
a
1 1 0001 0
142
62
b
1100011
143
63
c
1100100
144
64
d
1100101
145
65
e
1100110
146
66
f
1100111
147
67
g
1101000
150
68
h
1101001
151
69
i
1101010
152
6A
J
1101011
153
6B
k
1101100
154
6C
I
1001101
155
6D
m
1101110
156
6E
n
1101111
157
6F
0
1110000
160
70
P
1110001
161
71
q
1110010
162
72
r
1110011
163
73
s
1110100
164
74
t
1110101
165
75
u
1110110
166
76
V
1110111
167
77
w
1111000
170
78
X
1111001
171
79
V
1111010
172
7A
z
1111011
173
7B
c-
Left brace
1 1 1 1 1 00
174
7C
1111101
175
7D
}-
Right brace
1111110
176
7E
1111111
177
7F
DEL - Delete
65
Diode matrix - this
system of generating
the ASCII code is used
in older keyboards.
H5V
of course to get a keyboard
which has power
requirements listed on its
encoder printed circuit in no
uncertain terms. However,
"the best" is often a matter
of luck and judicious choice
of equipment in surplus
circles . . . you can make do
with less than perfect
documentation by employing
some knowledge of common
design practices. Figuring out
power voltages requires the
analysis of one circuit power
line for each level of voltage
involved to completely
establish the requirements of
the system.
One of the least
ambiguous ways to identify
power lines is to look up the
power pinouts of the
integrated circuit components
used in your keyboard. This
method requires a supply of
reference books and a
keyboard encoder circuit
VOM
300mA
SCALE
-«— *0=
<<t-
<$■
KEY
BOARD
Fig. 2. Turn it on and cross your fingers.
which uses standard part
numbers. For keyboards
which are manufactured by
the smaller companies in the
computer field, parts are
usually standard items so that
this method can be
employed. One of the main
justifications for home brew
computer clubs is the nice
informal arrangement which
provides for an exchange of
information of this type. In
the case of the Sanders
keyboard, the two integrated
circuit designs used were
labelled "ST659A" and
"ST680A". The only
problem is that no direct
reference could be found in
literature I had available.
However, don't give up with
an initial failure to find a
reference. What I did after
striking out on these two
numbers was to look for a
similar number differing only
in the alphabetical
information. I did find
references to two DTL
integrated circuits "SP659A"
and "SP680A," an
expandable 4-input NAND
gate and a quad 2-input
NAND gate. Both these gate
designs have package power
connections of Pin 8 for
power and Pin 1 for ground.
The gate references gave
me a high probability
determination of the power
connections by tracing down
ground to the I/O pin labelled
7 and tracing down power
(+5 for DTL) to I/O pin 5.
Being a cautious type of
person, I then looked for
some independent
confirmations of this power
pinout identification.
Another method of
identifying power and ground
connections is to look for
color coding on wires. This
kind of a confirmation is only
possible for boards
manufactured with hand
wiring. If the harness is one
of the multiconductor ribbon
cables, color coding is not
likely. In the keyboard I
analyzed I found that the
ground terminal of the
decoder was routed via a
black wire to the connector
on the case, and that the +5
volt terminal was routed to
the connector via a red wire.
This is consistent with the
industry conventions which
are used for such wiring —
power (positive) is red,
ground (negative) is black.
Still another method for
determination of power
connections is to examine the
polarity of electrolytic
capacitors mounted on the
board for local power supply
filtering. These bypass
capacitors are often (not
always) connected between
66
Detail of the output pins.
This keyboard is one of
the more desirable types -
it has labeling of many key
features etched along with
the printed wiring.
•■■
the positive supply and
ground, with markings of (+)
for the supply side and (-) for
the ground side. In the
disassembled keyboard
photograph accompanying
this article, the bypass
capacitor is labeled. Using
clip leads, the bypass
capacitor often provides a
handy way to apply power
when first testing the board.
Multiple power supply
keyboards often occur with
later equipment, especially
where MOS encoders are
employed. This will
complicate the analysis
problem — often to the point
where it might be wise to
avoid such boards unless
adequately labeled with
voltage designations, part
numbers and other
comments.
Turn It On and Cross Your
Fingers?
Now that you think you
have the power connections
straight, your next step in
analysis is to apply a little bit
of power to the circuit and
see what happens — using a
milliammeter. Connect the
keyboard using the circuit of
Fig. 2. If the power leads
have been correctly
identified, the current read
on the meter should be
approximately 100
milliamperes. Remove power
ASAP if the meter movement
is "pinned" on a 300 or 1000
milliampere scale, since that
indicates either a short circuit
or incorrect polarity for the
power. If a reasonable current
(under 300 milliamperes) is
drawn, then you can safely
trust your power connection
determination and proceed
by removing the meter from
the circuit.
Does It Have a Flag?
The next thing to look for
is a "flag" indicating that the
keyboard has been activated
by a finger and data is
present. The term "flag"
means a logic line generated
in the keyboard encoder
which may be either pulsed
or steady state. This test
requires a method of catching
pulses — either an
oscilloscope with about 10
MHz bandwidth, or one of a
number of logic probes
available which "flash" when
a state change occurs. Check
each of the several I/O
connection terminals while
pressing a key. If the
keyboard is working at all,
you will find at least one
terminal which changes state
— with a pulse or a level
change — as keys are
activated.
When you have found a
pin which changes state, the
next test is to see whether it
changes the same way for
every normal key on the
keyboard. If the effects vary
from key to key, then the
line in question is a data line
— if the tentatively identified
"flag" pin pulses or changes
its level consistently for all
keys (with one or two
possible exceptions) then it is
probably the flag desired. In
the Sanders surplus board
analyzed here, the flag pin
was found to be I/O
connection terminal 8.
The exception possible to
the "same behavior on every
key" statement is evidenced
in the Sanders board — the
flag interconnection terminal
is a pulsed output of 2
microseconds in width for all
keys except one: the
"Repeat" key causes the flag
to change its state. The flag is
normally high in this board,
but when repeat is depressed
it is held low.
Where's the Data?
Now, having found a flag
to indicate when data is
present, the next problem
immediately presents itself -
you now turn to examine the
other pins of the
interconnection to the
Fig. 3. The typical encoded bit
line for a diode matrix.
H5V
*DTL gates used in surplus
"Sanders 720" keyboard; TTL
might be used in variations on
this theme, e.g.: 7400 series.
"E
O
XPAND"
F 659--
INPUT lOOOIi
A PULLUP
\ <RESISTOR
^WIRED- "OR"(NEGATIVE LOGIC)
/ MATRIX BIT LINE
659*
71 ' f7~
71
OUTPUT BIT LINE
^J
Li <J
^DIODE ISOLATES
_/^ KEY LINES FROM
kX WIRED-OR BUS I
_i
\
V
R-S FLIPFLOP 2
STORES BIT
1
KEY \
r- WHICH
^ ACTIVATES
THIS BITLINE
IS CONNECTED
\
IN THIS MANNER
.
680*
V
U "RtAU"
P* SWITCH
COMMAND
LINE
h A?
67
3
y
y
10
II
4
\ i/i
5
12
V^
6
13
/
7\
»\
3
EXPANSION
—■ INPUTS^—
12
s
\
4
13
K-
10
/
6
\
7
9
K-
/
decoder and find no change
whatsoever in levels regardless
of the key pressed. Ah! The
frustration! It's enough to
drive you to tracing down the
logic of the keyboard, at least
for one of the low order data
bits. That's exactly what
happened in analyzing this
example of a keyboard. Fig. 3
is the result of that tracing
operation — using the pinouts
of Fig. 4 which were obtained
from an old (late sixties) data
reference for the DTL gates.
As can be seen in Fig. 3,
an R-S flip flop is made out
of two NAND gate sections
for each bit-line of the
keyboard. This storage of the
state of the diode matrix
outputs explains the lack of
change seen when first
examining the board's
outputs for possible data — in
order to read (or get ready to
read) a key, the R-S flip flops
of all diode matrix outputs
must be reset. The "read"
command line performs this
reset. After resetting, the first
negative going pulse on the
matrix bit line into the 659's
expander input sets the flip
flop, thus debouncing the
contact closure. There is one
bit line for each possible bit
of "raw data" — and some
logic is used to superimpose
the shift key and control key
information as required.
So, in order to find out
Fig. 4. Pinouts for the DTL gates
in the Sanders keyboard. (Unused
inputs are assumed logic 1
without external pullups.)
which interface terminal
corresponds to the "read"
command line which resets all
the flip flops, a bit more
circuit tracing is required.
Fig. 5 illustrates the effective
logic resulting from the
tracing for "Read" — which it
turns out is commanded by a
negative logic pulse from the
computer via interconnection
terminal pin 6. In Fig. 5, the
R-S flip flop (A) is used to
control the computer
interface. The receipt of an
acknowledge command from
the computer resets that flip
flop potentially allowing a
read, but the NAND gate (B)
inhibits recognition of any
new keystroke until after the
previous key is released. Thus
this keyboard has zero-key
rollover since all keys must be
released before a new key can
be recognized.
Figuring Out the Coding
Once the problem of
locked up outputs is solved
by identifying the
"Acknowledge" signal line,
the next problem is to
identify the bit lines at the
interconnection interface. To
do this requires the following
procedure (by hand) when
testing the state of individual
bit lines as keys are
depressed . . .
1 . Short the Acknowledge
line to ground.
2. Press a key whose code
is to be examined.
3. Look at the outputs on
a scope or logic state
indicator (the latter is an
LED driven by a gate
section).
To identify your coding,
make the following
reasonableness hypothesis
initially:
Keys with an identifiable
sequential order (eg:
alphabetical order) will be
consecutive integer numbers
in any reasonable binary
coding scheme.
You can identify the low
order bits in ASCII, for
instance, if you make this
assumption.
Fig. 5. Keyboard "Read" and Acknowledge logic.
COMMAND LINE
"ANY KEY DOWN
INHIBITS
ACKNOWLEDGE
INPUT
ANY KEY"
BUS
TO KEY SWITCHES
68
Table II. Terminal
Connections for the Sanders
surplus keyboard.
Terminal I.D.
#5 Power (+5 volts)
#6 Acknowledge (— )
#7 Ground
#8 Flag (— ) (pulse unless
REPEAT key held down)
#9 BitO(+) ASCII LSB
#10 Bit 1 (+)
#11 Bit 2 (+)
#12 Bit 3 (+)
#13 Bit 4 (+)
#14 Bit 5 (+)
#15 Bit6 (+)
So, pick two neighboring
keys with identical ASCII
high order bits, and test first
one then the other (using the
three steps above) for each
potential bit line until you
find a bit line which
alternates with your key
strokes. Thus, for instance, if
you alternately press @ and A
on the Sanders board of this
article (acknowledging
between each look) you will
find the state of interface
terminal 9 alternating. This
can only be the low order bit
of the ASCII code. Now pick
two keys in alphabetical
order which are at a change in
bit 1. For example, pick "A"
and "B". This will result in all
high order bits of the code
remaining identical down to
the ASCII bit 1 line. Examine
the terminals of the encoder
while alternately looking at A
and B until you find the line
which changes.
This procedure can be
repeated for the third ASCII
low order bit (bit 2) by
picking the letters C and D.
The bit 2 terminal is found to
be 1 1 by this test for the
Sanders board. Continuing
once more, test the bit 3
output by looking at G and H
alternately (ignore the
previously identified pins —
all high order pins will remain
the same).
By the time terminal 12 is
found to be ASCII bit 3, a
trend has been established for
this keyboard — ascending
terminal identifications from
9 are the bits of the ASCII
code. In many cases this will
be the order of terminals —
but you have to identify
several of the least significant
bits first before you can make
a conjecture. This conjecture
of ordering can be verified for
the Sanders board being
analyzed by looking at
typical codes (see Table I,
and look, for instance, at the
output for "line feed" using
the terminal identifications
listed in Table II).
Now a major input to this
identification process is the
assumption of ASCII coding
— if this assumption gives
"funny" results, you have no
choice but to use a slightly
different method: take each
key in turn, depress it, and
look at all possible output
bits lines of the encode.
Record the results in a table
similar to Table I, but with
the key you find, instead of
the standard ASCII. You may
find you have inverted data, a
completely non-ASCII code
set such as EBCDIC, or a
modified ASCII.
Now You've Sorted the Bits
- So What's Next?
When you have figured out
the equivalent of Table II for
your own surplus keyboard,
the next step is to make a
systematic identification in a
table similar to Table I. One
of the best ways to do this is
to use your computer with an
input port devoted to the
keyboard, and a display or
hard copy device for output.
A program written to
implement the flow chart of
Fig. 6 can be used to
selectively examine keys on
the keyboard. The program
accepts a key input, unpacks
the bits into a binary and
octal form, then displays the
bits on your output (TV,
character generator, or
printer) as a binary and an
octal number. If you have a
printer output (eg: a Teletype
or line printer) then you
should write the symbol on
the key next to each code
after the code is printed. If
you only have a display
output, then you should note
the code on paper along with
the key symbol. After you
have completed this bit of
research, your keyboard is
now thoroughly documented
so that its input codes can be
interpreted by programs. ■
Read Key Input
Port
Convert Key Code
to Binary and Octal
Character Strings
Display or Type
the Strings
Acknowledge
The Key (send pulse)
Fig. 6. Keyboard Test Program Flow Chart.
o E?n
WWH ■
iM r%
g n
SEP
TEI
no
ER
CALCULATOR CHIPS
O m
CAI
ML I
o
»1 Quality Cosmetic Seconds
5PI
cCI
AL
o
CT5001
$1.79 ea. $ .99
CTS002
2.49 ea. .99
SCHOOL TIME SPECIAL
CT5005
2.99 ea. 1.49
POCKET CALCULATOR Kl
MM5738
8 digit multiplexed — five function —
S function plus constant —
chain operation 2 key memory — floating
decimal — independent constant —
addressable memory with
individual recall — 8 digit
SP
*\.
interfaces with led with only digit driver —
9 V batt. oper. 24 pin $3.95
display plus overflow —
x&.
^l
battery saver — uses standard %Jta
9 DIGIT
or rechargeable batteries — all ^xj
■P
^N On multiplexed substrate, comm. ca-
necessary parts in
ready to
M
y thode compatable with all 8 digit
assemble lorm —
instructions
M
/ calculator chips, 7 segment right hand
included
$10.95
w
decimal, red with clear magnifying lens,
.12" character, 1 to 4 MA, 1.8 V typ 2 V x
'«" x '/"•"high $2.05
ASSEMBLED
SET OF ALKALINE BATT. .
1 1.S5
2.00
^/
TTL
LINEAR
MEMORIES
MM1101 $1.39
7400
J .13
340T 5V TO-220
$1.25
MM1103 1.49
7404
.15
340T 15V TO-220
1.25
MM5203 12.95
7408
.15
301N MINI DIP
.15
MM5261 1.95
7410
.13
307H TO-5
.15
MM5262 3.95
^ttl" 74<"
lit 7492
^^7^^B
.71 1
fS% OFF ON ORDERS OVER S50.00 ^W MEMORIES
7400
$ .14 7493
.60
1 10% OFF ON ORDERS OVER $1 00.00
L 1 5% OFF ON ORDERS OVER $250.00 M n0' 256 b'< RAM MOS
7<mi
.16 7494
.94 1
$ 1.50
7402
.15 7495
.79
^m 1103 1024 bit RAM MOS
■■Ml 2102 1024 bit static RAM
3.95
5.55
7403
7404
.16 74%
.19 74100
.79
1.30
^LINEAR CIRCUITS
^xB 5203 2048 bit UV eras PROM
"1 5260 1024 bit RAM
17.95
2.49
7405
7406
.19 74105
.35 74107
.44
.40
300
301
Pos V Reg (super 723)
Hi perf op amp
TO-5
mDIP
■3
1 5261 1024 bit RAM
1 5262 2048 bit RAM
2.69
5.95
7407
.35 74121
.42
307
Op AMP (super 741)
mDIP
.26
1 7489 64 bit ROM TTL
2.48
7408
7409
.18 74122
.19 74123
.45
.85
308
309K
Micro Pwr Op Amp
5V 1A regulator
mDIP
TO-3
.89
1.35
1 8223 Programmable ROM
L 74200 256 bit RAM tri-state
3.69
5.90 ^^
7410
7411
.16 74125
.25 74126
.54
.63
310
311
V Follower Op Amp
Hi perf V Comp
Hi Speed Dual Comp
mDIP
mDIP
1.07
95
7413
.55 74141
1.04
319
DIP
.:« I
7416
7417
.35 74145
.35 74150
1.04
.97
320
324
Neg Reg 5.2, 12. 15
Quad Op Amp
TO-3
DIP
1.04
1.52
[CALCULATOR &
7420
7422
.16 74151
.26 74153
.79
.99
339
340K
Quad Comparator
Pos. V reg. (5V, 6V, 8V,
DIP
1.58
1 CLOCK CHIPS
7423
.29 74154
1.25
12V, 15V, 18V, 24V)
TO-3
1.69
1 5001 12 DIG 4 fund fix dec
$3.45
7425
.27 74155
1.07
340T
Pos. V reg. (5V, 6V, 8V,
1 5002 Same as 5001 exc btry pwr
3.95
7426
.26 74156
1.07
12V, 15V, 18V, 24V)
TO-220
1.49
1 5005 12 DIG 4 funct w/mem
4.95
7427
.29 74157
.99
370
AGC/Squelch AMPL
DIP
.7,
1 MM5725 8 DIG 4 funct chain & dec
1.98
7430
.20 74158
1.79
372
AF-IF Strip detector
DIP
2.93
1 MM5736 18 pin 6 DIG 4 funct
4.45
7432
.23 74160
1.39
373
AM/FM/SSB Strip
DIP
.53
1 MM5738 8 DIG 5 funct K & mem
5.35
7437
.35 74161
1.25
376
Pos. V. Reg
mDIP
2.42
1 MM5739 9 DIG 4 lunct (btry sur)
5.35
7438
.35 74162
1.49
380
2w Audio Amp
DIP
1.13
1 MM531 1 28 pin BCD 6 dig mux
4.45
7440
.17 74163
1.39
380-8
,6w Audio Amp
mDIP
1.52
1 MM5312 24 pin 1 pps BCD 4 dig mux
3.95
7441
.98 74164
1.59
381
Lo Noise Dual preamp
DIP
1.52
1 MM5313 28 pin 1 pps BCD 6 dig mux
4.45
7442
.77 74165
1.59
550
Prec V Reg
DIP
.89
1 MM5314 24 pin 6 dig mux
4.45
7443
.87 74166
1.49
555
Timer
mDIP
.89
1 MM5316 40 pin alarm 4 dig
5.39 j
7444
7445
.87 74170
.89 74173
2.30
1.49
556A
560
Dual 555 Timer
Phase Locked Loop
DIP
DIP
1.49
2.48
L
7446
.93 74174
1.62
562
Phase Locked Loop
DIP
2.48
7447
.89 74175
1.39
565
Phase Locked Loop
DIP
2.38
rLED'S
7448
1.04 74176
.89
566
Function Gen
mDIP
2.25
7450
.17 74177
.84
567
Tone Decoder
mDIP
2.66
MV10B Red TO 18
$ .22
7451
.17 74180
.90
709
Operational AMPL
DIP
.26
MV50 Axial leads
.18
7453
.17 74181
2.98
710
Hi Speed Volt Comp
DIP
.35
MV5020 lumbo Vis. Red (Red Dome)
.22
7454
.17 74182
.79
723
VReg
DIP
.62
(umbo Vis. Red (Clear Dome
.22
7460
.17 74184
2.29
739
Dual Hi Perl Op Amp
DIP
1.07
ME4 Infra red diff. dome
.54
7464
.35 74185
2.29
741
Comp Op Amp
mDIP
.32
MAN1 Red 7 seg. .270"
2.19
7465
.35 74187
5.95
747
Dual 741 Op Amp
DIP
.71
MAN2 Red alpha nurn .32"
4.39
7470
.30 74190
1.35
748
Freq Adj 741
mDIP
.35
MAN4 Red 7 seq. .190"
1.95
7472
.30 74191
1.35
1304
FM Mulpx Slereo Dem
3d DIP
1.07
MAN5 Green 7 seg. .270"
3.45
7473
.35 74192
1.25
1307
FM Mulpx Stereo Demc
d DIP
.74
MAN6 .6" high solid seq.
4.25
7474
.35 74193
1.19
1458
Dual Comp Op Amp
mDIP
.62
MAN7 Red 7 seq. .270"
1.19
7475
.57 74194
1.25
1800
Stereo multiplexer
DIP
2.48
MANS Yellow 7 seq. .270"
3.45
7476
.39 74195
.89
3900
Quad Amplifier
DIP
.15
MAN64 .4" high solid seq.
2.95
7483
.79 741%
1.25
8038
V contr. osc
DIP
4.95
MAN66 .6" high spaced seq.
3.75
7485
1.10 74197
.89
8864
9 DIG Led Calh Drvr
DIP
2.25
MCT2 Opto-iso transistor
.61 m
7486
7489
k^ 7490
.40 74198
2.48 74199
.59 74200
1.79
1.79
;9fi .afl
75150
75451
75452
Dual Line Driver
Dual Perepheral Driver
Dual Peripheral Driver
DIP
mDIP
mDIP
1.95
.35
.35
^^g DjU intludrd with ordn on >rq
Add 1. 10 r* if ilrm it p<krdb*io»
11.00
75453
I 75491
(351) Dual Periph. Driver mDIP
Quad Seq Driver lor LED DIP
.35 1
.71 1
I CMOS 40,5A '•49 4M9A
4016A .56 4050A
.59 1
.59
■^^ r*. Xdd S.iO «■*. il ilrm ,. mil nrrir
^^75492
Hex Digit Driver
DIP
M^k
4000A 5 .26 4017A 1.19 4066A
4001A .25 4020A 1.49 4068A
4002A .25 4021A 1.39 4069A
.89
.44
.44
iw Satisfaction guaranteed. Shipment will be
made via first class mail within 3 day
from rece
ptol ^
4006A 1.35 4022A 1.10 4071A
.26
order. Add $.50 lo cover shipping and ha
idling for orders under $25.00. Minimum order $5.00.
4007A .26 4023A .25 4072A
.35
California residents add sale
lax.
4008A 1.79 4024A .89 4073A
.39
INT
ERNATIOI
4AL E
LECTRONICS UNLIMITED
4009A .57 4025A .25 4075A
4010A .54 4027A .59 4078A
.39
.39
1 ft,
P.O. BOX 1708/ (V
ONTER
EY, CA. 93940 USA
4011 A .29 4028A .98 4081A
4012A .25 4030A .44 4082A
4013A .45 4035A 1.27 4528A
.26
.35
1.60 i
1 s-W
PHON
! (408) 659-3171
^^^40I4A 1.49 4042A 1.47 4585A
2.10^H
INSIDE the Altair Computer
1. Central Processing Unit (CPU) Board.
This double-sided board is the heart of the
Altair. It was designed around the powerful
Intel 8080 microprocessor — a complete
central processing unit on a single LSI chip
using n-channel silicon gate MOS tech-
nology. The CPU Board also contains the
Altair System Clock — a standard TTL oscil-
lator with a 2.000 MHz crystal as the feed-
back element.
2. Power Supply. The Altair Power Supply
provides two +8, a +16 and a —16 volts.
These voltages are unregulated until they
reach the individual boards (CPU, Front
Panel, Memory, I/O, etc.). Each board has
all the necessary regulation for its own
operation.
The Altair Power Supply allows you to
expand your computer by adding up to 16
boards inside the main case. Provisions for
the addition of a cooling fan are part of
the Altair design.
3. Expandability and custom designing. The
Altair has been designed to be easily
expanded and easily adapted to thousands
of applications. The basic Altair comes
with one expander board capable of hold-
ing four vertical boards. Three additional
expander boards can be added inside the
main case.
4. Altair Options. Memory boards now
available include a 256 word memory
board (expandable to 1024 words), a com-
plete 1024 word memory board, and a
4,096 word memory board. Interface
boards include a parallel board and 3
serial boards (RS232, TTL and teletype).
Interface boards allow you to connect the
Altair Computer to computer terminals,
teletypes, line printers, plotters, and other
devices.
..••*•//£• '*'f«"jk
Other Altair Options include additional
expander boards, computer terminals,
audio-cassette interface board, line
printers, ASCII keyboards, floppy disc sys-
tem, alpha-numeric display and more.
5. All aluminum case and dress panel. The
Altair Computer has been designed both
for the hobbyist and for industrial use. It
comes in an all aluminum case complete
with sub-panel and dress panel.
6. It all adds up to one fantastic computer.
The Altair is comparable to mini-com-
puters costing 10-20 thousand dollars. It
can be connected to 256 input/output
devices and can directly address up to
65,00Q.words of memory. It has over 200
machine instructions and a cycle time of
2 microseconds.
You can order the Altair Computer by
simply filling out the coupon in this ad or
by calling us at 505/265-7553. Or you can-
ask for free technical consultation or for
one of our free Altair System Catalogues.
MITS/6328 Linn NE, Albuquerque, NM, 87108 505/265-7553
PRICES:
Allair Computer kit with complete assembly
instructions $439.00
Assembled and tested Altair Computer $621.00
1,024 word memory board $97 kit and
$139 assembled
4,096 word memory board $264.00 kit and
$338.00 assembled.
Full Parallel Interface board $92.00 kit
and $114.00 assembled.
Serial Interface board (RS232) $119.00 kit and
$138.00 assembled.
Serial Interface board (TTL or teletype) $124.00
kit and $146.00 assembled
NOTE: Altair Computers come with complete docu-
mentation and operating instructions. Altair cus-
tomers receive software and general computer
information through free membership to the Altair
User's Club. Software now available includes a
resident assembler, system monitor, text editor and
BASIC language.
\M\
"Creative Electronics"
Prices and specifications subject to change
without notice. Warranty: 90 days on parts
for kits and 90 days on parts and labor for
assembled units.
MAIL THIS COUPON TODAY!
D Enclosed is check for $_
D BankAmericard #-
H
□ or Master Charge #-— ; — i —
P Credit Card Expiration Date
D Altair Computer ■'□ Kit D Assembled
□ Options (list on separate sheet)
Include $8.00 for postage and handling.
D PLEASE SEND FREE ALTAIR SYSTEM CATALOGUE
NAME , ,
CITY-
-STATE&ZlP_
L
MITS/6328 Linn NE, Albuquerque, NM, 87108
505/265-7553
LIFE
Carl Helmers
Editor, BYTE
Line
Games played with
computer equipment
are applications of value
above and beyond the
momentary "hack" value of
putting together an
interesting program. The
creation of a game is one of
the best ways to learn about
the art and technique of
programming with real
hardware and software
systems. LIFE Line concerns
a game — the Game of LIFE,
originated by Charles Conway
and first publicized by Martin
Gardner in Scientific
American. The Game of LIFE
serves as the central theme of
LIFE Line — a well defined
application of the type of
hardware and software which
is within the reach of BYTE
readers. The description of
the LIFE application is the
"down to earth" goal of
LIFE Line. However, I have
an ulterior motive as well —
LIFE Line is a very
convenient and practical
vehicle for teaching ideas
about program and system
design which you can apply
for your own use. Even if you
never implement a graphics
output device and interactive
input keyboards, you can
gain knowledge and improve
your skills by reading and
reflecting upon the points to
be made in LIFE Line. The
LIFE application also has the
side benefit of illustrating
some techniques of
interactive visual graphics
which can be used much
more generally.
The Starting Point
In developing a system, it
always helps to know what
you want to do! The ability
to pin down a goal for a
programming effort — indeed,
any effort you make — is one1
of the most important tools
of thought you have available
(or can develop) in your
personal "bag of tricks."
Goal setting does not
necessarily mean a complete
and detailed description of
the result — the feedback
from the process of reaching
the goal can often modify the
details. Goal setting means
the setting of a standard in
your mind — and on paper —
of what you want to
accomplish. This standard is
used to evaluate and choose
among alternatives in a
methodical approach to a
system which meets that
standard.
How to Get From Here to
There
The goal of LI FE Line is a
hardware/software system
which enables the home brew
computer builder such as you
or me (the "byter") to
automate the game of LIFE
using relatively inexpensive
equipment. It's appropriate
here to give a preliminary
road map of the course LIFE
Line will take, as an
illustration of the first steps
in the development of a
complicated system . . .
1. The facts of LIFE.
Defining the rules of the
game and its logical
requirements always helps —
after all, I would not want to
confuse it with chess, poker
or space war!
2. What do I need to
implement LIFE? Once I
know the rules, my next
problem is to sketch the
hardware and software
requirements for a reasonable
implementation.
3. Programming. Given the
necessary hardware, the
biggest lump of effort is the
process of programming the
application. Some parts of
this lump include . . .
— Control flow:
Outlining the major
pieces of the program
and their relationships.
—Partitioning: A well
designed system is
simple! But how can
the desired simplicity
be reconciled with
"doing a lot." One way
is to partition the
system into pieces.
Within each piece, a
further partition
provides a set of
sub-pieces and so on.
Each piece of the
program is thus kept at
a level of relative
simplicity, yet the
whole system adds up
to a quite sophisticated
set of functions.
— Coding: With the
application design laid
out in some detail, the
program must be coded
and debugged for a
particular computer.
The result could be a
series of octal or
hexadecimal numbers
for your own
computer, or a high
level language program
which can be translated
by an appropriate
compiler.
72
Fig. 1. Three views of LIFE: (a)
on paper; (b) in memory; (c) on a
display.
A
•
B 00
000
0000
00000
00000
00000
00000
00000
00000
A live '
memory.
0000
0000
0000
0000
0000
0000
0000
0000
0000
cell" is
000
000
000
000
001
000
000
000
000
a "V
0000
0000
0000
0000
0000
0000
0000
0000
0000
' bit in
A live "cell" is a dot on paper.
A live "cell" is a point of light on
a graphics display.
What Are The Facts of LIFE?
Ask a biologist the
question "What are the facts
of life?" and you will get one
answer; ask a "byter" and
you'll get the "real" answer —
an evolution algorithm used
to generate the placement
and "cell" content of a
square grid given the previous
state of cells in the grid. The
inspiration of the game is a
combination of modern
biology, the concept of
"cellular automata" in
computer science and the
pure fun of mathematical
abstractions. In making a
computer version of the
game, the simplest approach
is to think of a group of
individual "bits" in the
computer memory — with
your thoughts assigning one
memory bit to each "square"
of the grid. (The hand
operated form of the game
algorithm uses graph paper
for the squares in question.)
If I have a place in memory
which can store one bit, it
can have a value of logical
"zero" or logical "one".
The LIFE game treats each
location of the grid (its
"squares") as a place where a
"cell" might live. If the place
is empty, a logical "0" value
will be used in the computer
memory; if the place is
occupied, the "cell" will be
indicated by a logical "1"
value. The rules' of the LIFE
algorithm are defined in
terms of this idea of a "cell"
(logic 1 ) or "no cell" (logic 0)
at every point in the universe
of the grid. Fig. 1(a)
illustrates a single live cell on
a section of graph paper as I
might record it when I work
out the LIFE process by
hand. Fig. 1 (b) shows a
similar section of the
computer memory in which
bits ("0" mostly, but "1" for
the cell) stand for the content
or lack of content of a square
on the grid. Fig. 1(c) shows a
third view — the output of a
program which puts the
computer memory bits of the
grid onto a graphics display.
Look again at Fig. 1(a).
The "cell" on the graph paper
grid is a black dot placed in
some location. Count the
number of graph paper
squares which directly
surround the live "cell"
location. There are 8 possible
places which are "nearest
neighbors" to the place held
by the live cell. Similarly, if
you pick an arbitrary square
on the graph paper, you can
count up its nearest neighbors
and find 8 of them also. The
rules of the LIFE algorithm
concern how to determine
whether to place a "cell" in a
particular square of the grid
for the "next generation",
given the present content of
that square and its 8 nearest
neighbors.
What are the properties of
a specific grid location of the
game? I've already mentioned
its binary valued nature (it
has a "cell" or it doesn't) and
its neighbors. One more
property which is crucial to
the game of LIFE is that of
the "state" of its 8 nearest
neighbor squares. For LIFE,
the "state" of the neighbors
of a grid location is defined as
"the number of occupied
neighbors." In the examples
of Fig. 1, the "state" of the
grid location with the live cell
is thus "0" (no neighboring
cells), and the state of any
cell location which touches
the single live cell's location is
"1". If 1 were to fill the
entire graph paper or its
memory equivalent with live
cells, the state of any grid
location in the middle would
be "8".
Stated in words, the rules
of the LIFE algorithm
determine the content of
each grid location in the
"next generation" in terms of
its present content and the
state of its nearest neighbor
grid locations. The rules
divide into two groups
depending upon the present
content of the grid location
whose "next generation"
value is to be calculated:
X^
73
Fig. 2. (a) A "glider" generation #n. (b) Examining location "Z" and its
nearest neighbors, (c) What has to change for generation #n+l. (d) The
second phase of the glider (generation ih+1).
B
o • • •
o •
Rule 1. LIVE CELL
LOCATIONS. If the location
to be evolved has a live "cell"
at present ("this generation")
then,
1 . 1 Starving for
Affection. If the
location to be evolved
has a state of 0 or 1,
there will be no cell at
the location in the next
generation. Metaphori-
cally, if the cell has
only one or no nearest
neighbors it will die out
for lack of interaction
with other members of
its species.
1 .2 Status Quo. If the
location to be evolved
has a state of 2 or 3,
the present live cell will
live into the tomorrow
of the next generation.
1 .3 Overpopulation. If
the location to be
evolved has a state of 4
thru 8, there will be no
cell at the location in
the next generation.
Metaphorically, the cell
has been crowded out
by overpopulation on a
local basis.
Rule 2. EMPTY
LOCA TIONS. If the location
to be evolved has no live
"cell" at present ("this
generation") then,
2.1 The Sex Life of
Cells. If the location to
be evolved has a state
of 3, a new cell will be
"born" in the formerly
empty location for the
"next generation."
Metaphorically, the
three neighboring
"parent" cells have
decided it is time to
have a child.
2.2 Emptiness. If the
location to be evolved
does not have three
cells in neighboring
locations, it will remain
empty.
This is the simplest set of
rules for the LIFE algorithm,
a version which will allow
you to begin experimenting
with patterns and the
evolution of patterns. More
complicated extensions can
be made to provide an actual
interactive (two people)
competitive game version; an
interesting variation I once
implemented is a LIFE game
with "genetics." In the
genetics variation, each grid
location (graph paper square)
is represented in the
computer as a "character" —
an 8 bit byte — of memory.
The character in the square is
the "gene" pattern of that
cell. Then, when rule 2.1 is
implemented, LIFE with
genetics uses a set of genetic
evolution rules to determine
which character will be put in
the newborn cell based upon
the "genes" of the parents.
(This genetic evolution
program for LIFE was
written for my associates at
Intermetrics, Inc., as a test
program to try out a new
compiler's output.)
How Do You Use The Facts of
Life?
To illustrate the facts of
LIFE, a hand-worked
example is a valuable tool of
understanding. Consider a
"typical" pattern of LIFE as
shown in Fig. 2(a). Fig. 2(a)
shows what LIFE addicts call
a "glider" for reasons which
will become clear a little bit
later in this article. The glider
pattern of Fig. 2(a) consists
of the five cells indicated by
black dots, and their
positions relative to one
another. I have also indicated
a dotted line in all the
illustrations of Figs. 2 and 3
as a fixed reference point in
the grid.
The algorithm for evolving
one generation to the next is
illustrated for one grid
location in Fig. 2(b). The
LIFE program will examine
each location in the grid one
by one. This examination is
used to figure out what the
content of the cell will be in
the next generation according
to the facts of LIFE. Since
these facts only require
knowledge of the given grid
location Z and its 8 nearest
neighbor locations, Fig. 2(b)
depicts a box of 9 squares
including Z. The rest of the
universe is shown shaded. To
determine what grid-space
location Z will be like in the
next generation, the LIFE
program first counts up the
live cells in all the
nearest-neighbor positions.
The count is the "state" of Z.
In this case there are 3 live
cells on the top edge of the
box containing Z. Then, the
program chooses which rule
to use depending upon
whether or not location Z has
a cell. In this case, Z is empty
so the "empty location" set
of rules (numbers 2.1 or 2.2)
is used. Since the state of Z is
3, rule 2.1 applies and a cell
will be born in location Z for
the next generation.
Now if I had a true
"cellular automaton" to
implement the LIFE
program, all grid locations
would be evolved
"simultaneously" — and very
quickly — in the computation
of the next generation. In
point of fact, however, I have
74
a computer which can only
handle 8 (or 1 6) bits at a time
which are stored in words of
memory. For small
microcomputers, these bits
for the LIFE grid will be
stored as "packed" bit strings
and will be accessed by a
series of subroutines which
will be described in LIFE
Line when the time comes. I
have to sequentially look
at every bit of the internal
LIFE grid of the program and
examine its old nearest
neighbors in order to
calculate its new value. I
emphasize old for the
following reason: if I store
the new value of the grid
location just evolved back
into that location with no
provision to recall its old
value, I'll end up with a
mixture of old and new data
when I look at the next grid
location in the row. That
mixture is not part of the
rules and constitutes a
"faulty" program for
evolution. It turns out to be
sufficient to remember all the
data in one previous row
before it was changed in
order to calculate the next
row after the change. Similar
problems of keeping track of
partially updated data often
occur in computer
programming, to be solved by
the identical technique of
temporarily remembering a
copy of the un-updated data.
In Fig. 2(c), the result of
examining all the grid
locations in the vicinity of
the glider of Fig. 2(a) is
illustrated. The changes are
indicated by three notations
for cells:
Generation "n+1" of the grid
of LIFE is illustrated in Fig.
2(d), which was obtained by
"executing" the changes
noted in Fig. 2(c). When the
LIFE program is run, all this
is done automatically for
each point in the grid —
resulting in a new generation
as soon as the computer can
complete all the calculations.
The patterns will be seen to
"evolve" in real time as new
generations are calculated and
sent to the scope output. One
"dot" on the scope display
corresponds to each live cell
of the grid pattern. Fig. 3,
(a), (b) and (c), continue the
pattern evolution illustrated
in Fig. 2 for the "glider". In
Fig. 3(a), changes to
generation n+1 are indicated
with the same notation as was
used in Fig. 2(c). The
resulting generation n+2
pattern is shown at the right.
Fig. 3(b) shows the changes
from generation n+2 to
generation n+3, and 3(c)
shows the change going to
generation n+4.
One of the most
interesting features of the
LIFE game is the evolution of
patterns which "move" across
a graphics display device.
With a fast enough processor,
a glider such as the one used
in this example will "glide"
to the lower right of the
screen at a breakneck speed,
going off into limbo at the
edge — or if the program is
Q) — this indicates a new cell generated
by rule 2.1
jjT— this indicates an old cell which dies
by rules 1.1 or 1.3
^— this indicates an old cell which is
retained by rule 1.2
sufficiently ' 'smart",
reappearing elsewhere on the
screen due to a "wrap-
around". The reason that the
glider gets its name is because
of its motion attributes. Note
now the fourth generation
("n+4") in the sequence
repeats the original glider
pattern, but has moved one
unit along a diagonal of the
LIFE grid toward the lower
right. (The reference line
shows this movement.) It
took four generations for the
glider pattern to regenerate
its original form, which
defines the "period" of this
pattern. When you get your
graphics interface up and
running, you will find
numerous other classes of
patterns, some of which have
periods which run into
hundreds of generations.
There are also other forms of
moving patterns similar to the
glider.
What Do I Need to
Implement LIFE?
The fun part of LIFE is to
experiment with patterns of
cells and observe how the
evolution from generation to
generation changes with
patterns and classes of
patterns. In the lexicon of
LIFE lovers, there are whole
classes of "gliders", "space
ships", "blocks", the
"blinkers", "beehives", the
"PI" and other patterns.
You'll be able to set up initial
configurations of these and
other patterns, and observe
the course of evolution using
the hardware/software system
Fig. 3. (a) Third phase of the glider, (b) Fourth phase of the glider, (c)
Back to the first phase, but displaced!
GENERATION N+3
: ■■■:■ ' ■ ■■■■■■■ ■:■■ *»*-:>;>::>"-*: : , . . .■..■■■■... ■ ■ ,
"• • •
GENERATION N+4
75
Fig. 4. The LIFE grid display with cursor detail (showing suggested pattern).
64 " x " positions "
x,y) designated
by cursor
concepts of LIFE Line. The
hardware requirements of this
application's first simple form
are three:
1 . An input method. The best
all around input you can get
for your computer is an
ASCII encoded typewriter
keyboard. This hardware will
be assumed, with 7-bit ASCII
codes used in the examples of
programs. If you feel like
embellishing the program
with special hardware, a
"paddle" with several keys
can be wired in parallel with
your main keyboard to
control the special functions
of the LIFE program. The
input keys used to control
the display will require a
keyboard which can detect
two simultaneous (or three)
keys being pressed. A normal
ASCII encoded keyboard
with an LSI encoding chip
will not work "as is" in this
application since pressing two
keys (other than control or
shift and one other) will be
resolved into two characters.
An alternate "paddle" type
of arrangement is to use a
single input port with one
switch key switch for each bit
of the port, debounced by
software. A keyboard which
is encoded by a diode matrix
can be used since the diode
matrix will give a new code
(logical sum) based upon
which keys were depressed.
2. A processor. The game can
be implemented on any
conventional computer. As a
measure of capacity,
however, the simple form will
assume a 64x64 bit array for
the playing field, and an
available home brew
processor such as an Intel
8080 (i.e.: Altair), Motorola
6800, or National PACE. The
total programming capacity
of your memory should be
roughly 4000 8-bit words, or
2000 1 6-bit words; the
playing field will require 512
8-bit words, or 256 16-bit
words — and programming
will include a set of
subroutines to access
individual bits.
3. A display. My first version
of LIFE was implemented on
a PDP-6 in FORTRAN at the
University of Rochester when
I was a student. That program
used a direct link out to a
DEC Scope controlled by a
PDP-8 - with a teletype for
input. I have s ince
implemented life programs
using character-oriented
terminal output and line
printers.
The display to be used for
LIFE Line purposes I'll leave
undefined in detail, but with
the following characteristics:
It should have an X-Y
selection of coordinates for
display elements (LIFE grid
locations), which can be
individually controlled. Its
size will be assumed 64x64.
A Note Regarding Speed
The LIFE algorithm to be
illustrated in LIFE Line is
optimized fairly well for
speed — a requirement which
will become obvious in the
context of your own system
if you use a typical
microprocessor. With a fairly
large pattern of cells, it may
take as much as a minute or
more to compute the next
generation. Trading off
against speed is memory size
— use of a packed bit
structure is necessary if the
matrix and programs are to
fit in a micro computer which
is inexpensive. But the
packed bit structure requires
time to access bits (eg: the
shift/rotate instructions
several times might be used in
the access process). I predict
that the program will be
"dreadfully slow" if run on
an 8008, and perhaps
passably quick if you use a
6800 or 8080. ("Passably
quick" means under 10
seconds per generation.) A
used third-generation mini
(high speed TTL) would be
ideal.
User Features
No application is complete
without taking in to
consideration the user of the
system. The interface which
controls the system is an
important section of the
design. There is a temptation
on the part of individuals
such as you or I to say words
to the effect: "Since I am
making it for me, who the
heck cares about the user
interface." But! Removing
the system from the working
product realm to the purely
personal realm does not
eliminate the need to design a
76
usable system. You have at
least one user to think of —
yourself! In point of fact,
however, I doubt that any
reader who builds a scope or
TV graphics interface will be
able to resist the temptation
to show it off to his or her
family and friends; so, even
for "fun'' systems,
consideration of users is still a
major input.to the design.
The user interface for the
LIFE program will provide
the following functions to
enable a pattern to be drawn
on the screen and initiated:
1. Cursor. The display
output should provide a
"cursor" which is maintained
all the time by a subroutine
in the software at a given "X"
and "Y" position of the
matrix. Fig. 4 illustrates the
point matrix of the screen
(here assumed 64x64) and
the cursor pattern. The cursor
is a visual feedback through
the display to the user of the
LIFE program, illustrating
where the program will place
or erase information. Fig. 4
shows a blow-up of one
possible cursor pattern.
Two additional features
are required for a useful
cursor output of the program
for LIFE. These are:
- A blinking feature.
Suppose you have filled the
screen with a complicated
pattern drawn with the cursor
controls described below. A
significant number of the
screen points are now filled
with dots — and there will be
a strong tendency to confuse
the cursor pattern of Fig. 4
with the actual data pattern
you have entered. A "blink"
feature can be built into the
programs which create the
cursor so that you will always
be able to distinguish it by its
flashes.
— A blanking feature. For the
LIFE game, a necessary
attribute of cursor control is
the ability to blank out the
cursor during the actual
evolution of patterns. I
consider this necessary due to
observation of a
Birth - the cursor leaves a path of "cells," illuminated points.
Death — cells in the cursor's path are eliminated.
demonstration LIFE program
for one desk top
programmable CRT terminal:
its cursor is always present
and mildly annoying when
the LIFE game is in
operation.
A basic way to make the
cursor disappear from view at
certain times is to require
active control by cursor
display routines when the
program is in its input mode.
If the LIFE program leaves
the input mode to go evolve
some patterns, the cursor will
die a natural death until the
active maintenance is
resumed on return to the
input mode.
2. Cursor Control. The
whole purpose of the cursor
is to provide a means of
feeding back to you — the
user — the current grid
location the LIFE program is
pondering. Movement of the
cursor provides the
opportunity for three types
of data entry to the program:
— Positioning of the Cursor.
By simply moving the cursor
under control of the
keyboard (see below) you can
direct the LIFE program's
attention to different parts of
the screen.
— Sowing Seeds of LIFE. By
moving the cursor while
indicating a "birth" function,
the cursor will leave a trail of
"cells" indicated in the
display by illuminated points.
(One keyboard key is
required for this function.)
— The Grim Reaper. By
moving the cursor while
indicating a "death"
function, any cells in the path
of the cursor will be
eliminated, by turning off the
corresponding display point.
(One keyboard key is
required for this function.)
Motion control is also used
to enter data. By picking a
data key and at the same time
depressing one or two of the
cursor direction keys, a
"trail" will be left. A timing
loop in the input program
will be used to set a
reasonable motion rate in the
X (horizontal) and Y
(vertical) directions, so that
the data entry will be
performed automatically as
long as the keys are
depressed. The motion
control keys and useful
combinations are illustrated
in Fig. 5.
3. Program Control
Commands. This is the
section of the LIFE program
design which is the software
analog of the "backplane"
data bus concept in a
hardware system. LIFE Line
concerns a modular LIFE
program which will be subject
to many variations and
improvements.
77
KILLING TWO BIRDS WITH ONE STONE, or "HOW I
DESIGNED A GENERAL INTERACTIVE GRAPHICS
SOFTWARE INITIALIZATION PACKAGE IN THE GUISE
OF A SPECIFIC APPLICATION.
The ideas contained in this article are by no means limited
to control of the graphics display type of device in the LIFE
context used for this application. The only necessary
connection between the LIFE program proper and the display
"drawing" and updating functions is in the existence of several
subroutines needed to turn on/ turn off selected points, and
the ability of the display input ("drawing") routines to call the
LIFE program. One logical extension of the program control
mechanisms to be included in LIFE Line is to allow the
invocation (ie: activation, calling, etc.) of other programs and
games which use the display.
When the "drawing" routines are up and running, even
before you hook up the LIFE algorithm proper, you'll be able
to manipulate the contents of the scope under software
control and draw pictures on the screen.
Fig. 5. Cursor motion control commands.
The following commands (one key on your keyboard for each) are used to simply move the cursor in one
of the grid directions at a rate set by the cursor control software:
Typical "Key Tops"
f UP J or
(DOWN) or
( LEFT J or
(rIGHt) or
Move toward top of screen.
Move toward bottom of screen.
Move left on the screen.
Move right on the screen.
The following combinations can be used to achieve motion in diagonal directions:
Toward Upper Right Corner- PRESS ( UP J AND (rIGHTJ AT THE SAME TIME.
Toward Lower Right Corner- PRESS ( DOWN J AND (rIGHt) AT THE SAME TIME.
Toward Lower Left Corner - PRESS (down) AND (left) AT THE SAME TIME.
Toward Upper Left Corner -PRESS ( UP J AND f LEFT J
AT THE SAME TIME.
Remember that all eight of these possibilities can be used to "sow the seeds" or erase data if the
appropriate data key is pressed simultaneously.
The first demonstration of
LIFE in these pages is just the
bare bones of a LIFE
program. When it is fully
described you will see the
input display routines, the
evolution algorithm, the
program control mechanism
and little else. The program
control mechanism, however,
is quite general and will be
used to integrate additional
commands, variations on
LIFE, etc. The means of
achieving this modularity-is a
set of "hooks" which enable
you to add commands
beyond the bare minimum by
coordinating new modules
with the program. The
following is a minimum set of
program control commands
for the first version:
RUN — a key assigned to this
function will terminate the
input ("drawing") mode, and
begin the "run mode."
DRAW — a key assigned to
this function will be tested
during the "run" mode to
cause a return to the "draw"
mode.
CLEAR — a key assigned to
this function will be used to
clear the screen in the
"drawing" mode, leaving only
the cursor and a blank screen.
The above features are
only a minimum set of user
controls for LIFE. Additional
program control commands
which will prove invaluable
when added include:
SAVE/RESTORE -
commands to write and read
LIFE patterns on cassette
tape or other mass storage
device in your home brew
system.
I N 1 T I ALIZATION -
functional key entries for the
generation of various
"standard" LIFE patterns
placed at the current cursor
location.
Next month, LIFE Line
will enter into the realm of
software design to describe
the LIFE program software in
more detail.
78
LIFE Line Glossary.
Communication of meaning requires definition of terms. The following is a listing of selected terms used
in LIFE Line with short explanations. Tire terms which are marked "L" are primarily significant only in the
LIFE application - all others are fairly general terms.
"Active Control" - in the LIFE example, a desired
requirement for the cursor is that it disappear
automatically if not continually refreshed. This can
be accomplished in software by instituting a
"garbage sweeper" for the screen which clears the
screen memory periodically and updates from the
latest non-cursor sources of data. Normally, the
cursor control/display subroutine would be called
after the screen is updated - but if the cursor
control routine is not called, the cursor will be
absent after garbage sweeping. The cursor is thus
said to require "active control" because it must be
explicitly posted on the screen following the
garbage sweeping operation if it is to appear at all.
(L)
"Algorithm" - this term has a formal mathe-
matical origin as the generalized methodology for
arriving at some result. In the computer science
area, it retains this definition: an algorithm is the
most general processing required to achieve some
result. "Algorithm" is a term which includes the
term "program" in the following sense: a program
is an algorithm (general) as written and coded for a
specific system.
"Application" - an application is a specific system
designed to accomplish some goal. In the computer
systems area, applications are generally composed
of hardware and software components which must
"play together" to accomplish the desired func-
tions. The LIFE Line's target - a working game of
LIFE - is an example of an application.
"Backplane Bus" - the hardware concept of a set
of wired connections between identical terminals
of multiple sockets. In modular systems, the
common wiring makes each socket identical to
every other socket. Hardware modules can then be
inserted without regard to position in the cabinet
containing the equipment.
"Cellular Automata" - conventional computers
employ a serial or sequential method of processing.
One instruction, then the next, is executed in a
time-ordered sequence. The "cellular automata"
concept is one way of visualizing large and compli-
cated parallel computing elements. Hypothetically,
the LIFE game could be played by such a cellular
computer, one which calculates each matrix
element simultaneously. In the present state of
computer technology, this is not possible, so you
have to settle for a simulation of the parallel
computation's result, using a serially executing
program.(L)
"Coding" - the process of translating a functional
specification of a program or routine into a set of
machine readable elements for actual use in a
computer. Coding can mean writing FORTRAN
statements, writing PL/1 statements, writing
assembly language statements, or ... if you have
no compiler, coding is the writing of machine
codes directly onto a sheet of paper using tables of
op codes, an eraser and patience.
"Cursor" — a mark on a display screen used to
identify a particular place. This interpretation is an
electronic adaptation of the standard definition in
Webster.
"Evolution" - patterns in the game of LIFE
change from generation to generation according to
the rules. The sequence of such changes can loosely
be called the evolution of the pattern.(L)
"Feedback" - in the context of system develop-
ment, feedback is the use of observed system
behavior to modify and improve the design of the
system.
"Functional Specification" — a functional specifi-
cation of a system is one which describes "what"
the system must do, more or less independent of
any technology which is required to make the
"what" work. It is easy to come up with loose
functional specifications — the hard part is to
refine the specification and pin it down to some-
thing which is "do-able" in a given context of
technology. I have a functional specification in my
mind, for instance, of a useful interplanetary travel
method - but whether or not I ever see such a
system depends upon advances in physics,
engineering and economic understanding. BYTE
often concerns itself with functional specifications
of much more "do-able" systems which readers can
and will implement on home computers.
"Generation" - this term in the LIFE context
means the present "state" of all the locations in
the "universe of the grid" at some point in
time.(L)
"Implement" - technical jargon verb for the
creation of a system or element of a system. A
hardware designer might implement a controller or
a CPU; a software programmer implements a
system of programs; a systems designer implements
a hardware/software combination which achieves a
desired functional end.
"Indexing" — the technique of referencing data in
collection of similar items by means of numerical
"indices." In the LIFE Line example, the collec-
tion is that of the 64x64 array of bits in the
computer representation of "grid space." Indexing
by row and by column is used to pick a particular
bit within this array when the program requires the
data.
"Interact" - when a system "interacts" with
"something/person" it is operating under an
algorithm which allows conditional behavior
dependent upon data. The data is obtained from
the "something/person" and may in fact be
influenced by previous interactions as well as new
inputs. In many computer contexts "interact" has
the additional implication of "quick" response in
"real time." Thus when you think of an
"interactive" terminal or game, you think of a
computer programmed so that it keeps up with the
inputs from the human operator.
79
INTEL 1K 2102 RAM
Factory prime, tested units. Factory selected for
much faster speed than units sold by others. 650
NS. These are static memories that are TTL
compatible and operate off + 5 VDC. The real
workhorse of solid state memories because they
are so easy to use. Perfect for memories because
they are so easy to use. Perfect for TV typewriters,
mini-computers, etc. With specs.
$3.95 ea. or 8 for $30
SIGNETICS1KP-ROM
82S129. 256 x 4. Bipolar, much faster than MOS
devices. 50NS. Tri-state outputs. TTL compatible.
Field programmable, and features on chip address
decoding. Perfect for microprogramming appli-
cations. 1 6 pin DIP. With spec. $2.95 ea.
8T97B
By Signetics.
Tri-State Hex Buffer
MOS and TTL Interface to Tri-State Logic.
Special $1.49
DO YOU NEED A LARGE COMMON ANODE
READOUT AT A FANTASTIC PRICE?
S.D. presents the MAN-64 by Monsanto - 40 inch
character. All LED construction - not reflective
bar type, fits 14 pin DIP. Brand new and factory
prime. Left D.P.
$1.59 ea. 6 for $7.50
MOTOROLA POWER DARLINGTON - $1.99
MJ3001 - NPN - 80 Volts - 10 Amps - HFE 6000
typ. To-3 Case. Ideal for power supplies, etc.
We include a free 723 regulator w/schematic for
power supply with purchase of the MJ3001. You
get the two key parts for a DC supply for only
$1.99. Regular catalog price for the MJ3001 is
$3.82.
LARGE SIZE LED LAMPS
Similar to MV5024. Prime factory tested units. We
include plastic mounting clips which are very hard
to come by.
Special 4 for $1
48 HOUR SERVICE
You deserve, and will get prompt shipment. On
orders not shipped in 48 HRS' a 20% cash refund
will be sent. We do not sell junk. Money back
guarantee on every item. WE PAY POSTAGE.
Orders under $10 add 75^ handling. No C.O.D.
Texas Res. add 5% tax.
S. D. SALES CO.
P. 0. BOX 28810 DALLAS, TEXAS 75228
J
"Lexicon" - the list of buzzwords in any given
field. This glossary is a subset of a lexicon coupled
with explanations. In compiler and language
design, "lexical analysis" is a derivative of this term
concerned with language keywords and their rela-
tion to a grammar.
"n", "n+1", "n+2"... - when it is useful to
specify a sequence of things, where no particular
number is intended, a "relative" notation of the
sequence is useful, "n" is some arbitrary number;
"n+1" is one number greater than an arbitrary
number, and so on. When I say "generation n+1"
of LIFE, I mean the next generation after
generation "n" where "n" is arbitrary.
A suitable LIFE display peripheral is an oscilloscope
graphics interface such as the Digital Graphic Display
Oscilloscope Interface designed by James Hogenson and
printed in the May 1975 issue of ECS Magazine, the
predecessor to BYTE. The graphics interface article will be
expanded and published in BYTE No. 2, October 1975. Until
supplies are exhausted, back issues of May ECS (and earlier
articles) can be ordered at $2 each. Orders and inquiries
regarding ECS back issues should be sent to M. P. Publishing,
Box 378, Belmont MA 021 78.
"Partitioning" - the technique of "divide and
conquer." Rather than view a complicated system
as a monolithic blob of "function," an extremely
useful design method is to partition the system
into little "bloblets" of function which are easy to
understand. Hardware designers of CPUs thus think
of MSI chips as sub-elements in partitioning;
hardware systems designers think of CPUs and
peripherals and memories as sub-elements of parti-
tioning, and software designers consider divisions
of complicated programs and program libraries as
their sub-elements.
"State" - the present condition of some system,
or elements of the system. This term applies to any
system which has "memory" to distinguish one
possible "state" from another. The term applies
equally well to small sub-elements of a system such
as the bits of a memory: in the LIFE Line context,
the "state" of a single grid location is a number
from 0 to 8 counting how many "neighbor cells"
are present.
"System " - the most general of all general purpose
terms. A system is a collection of component
elements (technological, hardware, software,
human-interface) selected to play together accord-
ing to some design or purpose. A system is a
human-invented way of doing things.
"Undefined in Detail" - I know what is needed,
can specify its interface, but am not at present
supplying the detail design. This is a useful attitude
since it allows for "plug compatible" designs
differing widely in their internal principles of
operation. A similar expression would be to call
the subsystem in question (the graphic display
mentioned in this LIFE Line example) a "black
box" and leave it at that. (Software always seems
to reference hardware in this way, and hardware
does the same for software.) A synonym for the
attitude is the mathematician's way of saying "in
principle there exists a solution!" without telling
you what it is.
"Universe of the Grid" - this is the set of all
possible places in which a LIFE cell could be
placed. These places are called "grid locations". (L)
80
MITS Altair Computer Report II
MITS Announces Lower Memory Prices!
On lulyl, 1975, MITS lowered the price of the Altair 1K Static
Memory Card (88-1MCS). The kit price was dropped from $176
to just $97 while the assembled price was dropped from $209
to $139.
This price reduction was made possible by a reduction in the
price of the Altair 1K 8101 memory chips.
Also affected was the price of 88-MM 256 byte (word) memory
modules. The $53 kit price was lowered to just $14 and the $61
assembled price to $26.
Altair BASIC-Not Just
Anybody's BASIC
Altair BASIC is an easy-to-use programming language that can
solve applications problems in business, science and education.
You will find that with only a few hours of using BASIC that
you can already write programs with an ease that few other com-
puter languages can match.
Altair BASIC doesn't compromise power for simplicity. While-
it is one of the simplest computer languages in existence, it is
also a very powerful language.
ALTAIR BASIC comes in three versions. The first of these is a
4K BASIC designed to run in an Altair with as little as 4,000 words
of memory. This powerful BASIC language has 6 functions (RND,
SQR, SIN, ABS, INT, and SGN) in addition to 15 statements (IF . . .
THEN, GOSUB, RETURN, FOR, NEXT, READ, INPUT, END, DATA
GOTO, LEX DIM, REM, RESTORE, PRINT, STOP) and 4 commands
(LIST, RUN, CLEAR, SCRATCH).
The second ALTAIR BASIC option is the 8K BASIC designed
to run in an Altair with as little as 8,000 words of memory. This
BASIC language is the same as the 4K BASIC only with 8 addi-
tional functions (COS, LOG, EXP, TAN, ATN, INR FRE, POS) and
4 additional statements (ON . . . GOTO, ON . . . GOSUB, OUT,
DEF) and 1 additional command (CONT). This BASIC has a multi-
tude of advanced SFRING functions and it can be used to control
low speed devices — features not normally found in many BASIC
languages.
The third ALTAIR BASIC is the EXTENDED BASIC version
designed to run on an Altair with as little as 12,000 words of
memory. It is the same as the 8K BASIC with the addition of
' PRINT USING, DISK I/O, and double precision (13 digit accuracy)
add, substract, multiply and divide.
Altair BASIC is only the beginning. MITS is currently engaged
in an extensive software development program. Other software
now available includes an Assembler, System Monitor, and Text
Editor.
Altair software comes with complete documentation.
One Month Specials
The Altair Users Group is quite possibly the largest computer
hobbyist organization in the World. It is both a means of communi-
cation among Altair Users and a method of building a comprehen-
sive library of Altair programs. All Altair 8800 owners are entitled
•to a free, one year membership in this group.
For one month only, you can become an Associate Member lor
one year at a reduced rate of $10 (regularly $30). Among other
benefits you will receive a subscription to the monthly publication,
Computer Notes, which contains complete update information on
Altair hardware and software developments, programming tips,
general computer articles and other useful information.
Now available is the Altair Software Documentation Book I which
contains technical data on the Altair Assembler, Text Editor, System
Monitor and BASIC language software. This documentation is free
to purchasers of Altair BASIC. For one month only, it is being
offered for only $7.50 (regularly $10).
Offers good until September 30, 1975.
The IK Static Memory Card contains 1024 bytes of memory
with a maximum access time of 850 nanoseconds.
Now ready for production is the new Altair 2K Static Memory
Card (88-2MCS) with 2048 bytes of memory. Like the IK Static
Memory this new card contains memory protect features and
provisions for disabling the ready.
It has a maximum access time of 850 nanoseconds and is
engineered with the finest components available. It is inexpen-
sively priced at $145 kit and $195 assembled.
HARDWARE PRICES:
All air Computer kit with complete assembly instructions $439
Assembled and tested Altair Computer $621
1,024 Byte Sialic Memory Card $97 kit and $139 assembled
2,048 Byle Sialic Memory Card $145 kit and $195 assembled
4,096 Byle Dynamic Memory Card $264 kit and $338 assembled
Full Parallel Interface Card $92 kit and $114 assembled
Serial Interface Card RS232) $119 kit and $138 assembled
Serial Interface Card (TTL or Teletype) . $124 kit and $146 assembled
COMTER II* $780 kit and $920 assembled
•The Cornier II Computer Terminal has a full alpha-numeric keyboard and a
highly readable 32-character display. It has its own internal memory of 256
characters and complete cursor control. Also has its own built-in audio cassette
interface that allows you to connect the Comter II to any tape recorder for
both storing dala from the computer and feeding it into the computer. Requires
an RS232 Interface Card.
SOFTWARE PRICES:
Altair 4K BASIC $350
Purchasers of an Altair 8800, 4K of Altair Memory, and Allair Serial I/O or
Audio-Cassette I/O ONLY $60
Allair 8K BASIC $500
Purchasers of an Allair 8800, 8K of Altair Memory, and Altair Serial I/O or
Audio-Casselle I/O ONLY $75
Allair EXTENDED BASIC $750
Purchasers of an Allair 8800, 12K of Allair Memory, and Allair Serial I/O or
Audio-Casselle I/O ONLY $150
Allair PACKAGE ONE (assembler, text editor, syslem monitor)
Purchasers of an Altair 8800, 8K of Allair Memory, and Allair I/O ONLY $30
NOTE: When ordering software, specify paper tape or cassette tape.
Warranty: 90 days on parts for kits and 90 days on parts and labor for assembled
units. Prices, specifications, and delivery subiect lo change.
MAIL THIS COUPON TODAY!
D [inclosed is chock for S
□ BankAmericard n □ or Master Charge #
□ Altair B800 □ Kit D Assembled □ Options
Include $8 for postage & handling
□ Altair Users Croup Associate
D Please send free literature
NAME
ADDRESS
C I TV
(list on separate sheet)
DSoftware Documentation
.STATE & ZIP.
MITS/6328 Linn N.E., Albuquerque, NM 87108 505/265-7553 or 262-1951
Creative Electronics
MITS/6328 Linn N.E., Albuquerque, NM 87108 505/265-7553 or 262-1951
7400N TTL
SN74Q0N
SN7401N
SN7402N
SN7403N
SN7404N
SN74QSN
SN7406N
SN740/N
SN7408N
SN7409N
SN74I0N
SN74UN
SN7412N
SN74I3N
SN74I4N
SN741UN
SN7417N
SN74IHN
SN7420N
SN7421N
SN7423N
SN74ZSN
SN742GN
SN74?7N
SN7429N
SN7430N
SN7437N
SN7437N
SN7438N
SN7439A
SN7440N
SN7441N
SN7442N
SN7443N
SN7444N
SN7445N
SN744GN
SN7447N
SN744BN
SN745UN
SN7451N
SN7453N
SN7454N
SN7459A
SN7460N
SN7470N
SN7472N
SN7473N
SN7474N
SN7475N
SN7476N
SN7480N
SN7482N I
SN74B3N 1
SN7485N 1
SN748GN
SN7488N 3
SN7489N 3
SN7490N
SN7431N 1
SN7492N
SN7493N
SN7494N
SN7495N
SN7496N
SN7410QN 1
SN74107N
SN74I2IN
SN74I22N
SN74I23N 1
SN74125N
SN74I26N
SN74132N 3
SN74141N I
SN74142N E
SN74143N 1
SN74M4N 1
SN74145N 1
SN741A8N 3
SN74150N '
ounl for 100 C
SN74I51N
SN74153N
SN74154fl
SN74155N
SN74156N
SN74157N
SN74160N
SN741EIN
SN741G3N
SN741G4N
SN74165N
SN741GGN
SN741G7N
SN74 170N
SNJ4172N
SN74 173N
KN74174N
SN74175N
SN74I7GN
SN74 177N
SN74180N
SN74181N
SN74182N
SN74184N
SN74 18SN
SN741B7N
SN74190N
SN74I9IN
SN74192N
SN74193N
SN74194N
SN74 195N
SN74 19GN
SN74197N
SN74I9BN
SN74 193N
SN7420GN
SN74251N
SN74284N
SN74?BhN
t 7400s
crnooo
CO4O0I
CD4002
CD4Q0G
CD4007
CD4CI0fl
CO401O
CD4011
CD40I?
CD40I3
CO4016
CD40I7
CD40I9
CD402n
CO4022
CD4023
C 04 024
CD4025
CD4027
CD4028
CD4029
CMOS
2.50
.29
2.90
CD4030
CD4035
CD4040
C04042
CD4044
GD4046
CD4047
CD4049
CD4050
CD4051
CD4Q53
CD4060
CO4066
CD40B9
CD4071
CD4D81
74C00N
74C02N
74C04N
74C10N
74G20N
74C30N
74C42N
74C73N
74C74
74C90N
74C95N
74C107N
74C15I
74CI54
74C157
74C160
74C161
74CIG3
74C1G4
74C173
74C193
'4C195
B0C97
15 00
2 50
3.75
LM100H
LMIOGH
LMI7IH
LM212H
LM300H
LM3QIH
LM30JCN 3. 1
LM302H
LM3Q4H 1
LM305H
LM307CN
LM308H I
LM308CN 1
LM309H 1
LM309K 1
LM3I0CN 1
LM311H
LM3HN
LM31BCN 1
LM319N 1
LM319D
LM320K 5
LM320K 5.2 1.35
LM320K 12 1.35
LM320K I
LM323K-5
LM324N 1.80
LM339N 1.70
LM340K-5 1.95
LM340K 12 1.95
LM340K 15 1.95
LM340K 24 1 95
LM340To5 1.75
LM340Ta6 1.75
LM340Tot21.75
LM340Tu 151.75
lM340To24 1.75
LM350N 1.00
LM35ICN 65
LM370N 1.19
LM370H 1 15
900
14,00
LINEAR
LM373N 325
LM377N 4.00
LM380N 139
LM380CN 105
LM381N I 79
LM382N I 79
NE501K BOO
NE5I0A G.00
NE531H 3.00
NE53GT 6.00
NE540L 6.00
NE550N .79
NE553 2 50
NE555V 75
NE5G5H 1.25
NE565N 1.95
NE566CN 1.95
NE567H 1-25
NE567V 1.95
LM703CN 45
LM709H 29
LM709N .29
LM710N 79
LM711N 39
IM723N .55
LM723H 55
LM733N 1.00
LM739N 1.29
LM741CH 3 I 00
LM741CN 3 1.00
LM74I 14N .39
LM747H .79
LM747N .79
LM748H .39
LM748N .39
LM1303N .90
LM1304N 1.19
LMI305N 1.40
LMI307N 85
LM1310N 2.9
LMI351N 1G
LM1414N 1.7
LM145BC ,E
LM149GN 9
LM155GV 18
LM2111N 1.9
LM2901N 2 9
LM3065N .fi
LM3300N 5
LM3905N E
LM5556N 1 8
MC5558V | 0
LM7525N 9
LM7528N 22
LM7534N 2 2
LM7535N 1 2
8038 B 4.9
LM75450 .4
7S451CN .3
75452CN ]
75453CN 3
75454CN 3
7549ICN .7
75492CN 8
75494CN 8
RCA LINEAR
CA3013 1.7
CA3023 2.1
CA3035 2.2
CA3039 13
CA304G 1 1
CA3059 2.4
CA30GO 2.8
C A3 080 8
CA30B3 1 6
CA3086 .5
CA3089 3 2
CA3091 8.2
CA3123 18
CA3G00 1.7
MICROPROCESSOR COMPONENTS
$29.35 8111
1024 RAM $12.95
7489
8599
1101
2102
8101
7010 IK NMOS RAM
2107 4K HAM
Vacioi
149.95 1702A 2K PROM
64B RAM
ri-State 7489
25GB RAM
IK RAM
1024 RAM
2.95
3.50
2.25
4.95
11.95
52030 2KPR0M
8223 PROM
2401 2KSR
2533 1KSSR
AY-51013 UAHT
Retains data w/o Power
19.95
3.00
9.95
11.BS
7.95
450NS Access lime-22 p
DIP
General Purpose Logic CARD
High Noisa Immunity 'Holds 12 ea. 14 pin DIPS
n Edge Connection
THE KILOBYTE RAM CARD
'Complete 1Kx8 Memory * High Noise Immu
'Single 5v supply '500NS Access Time SKit i
Board
Per Kit 69.95
iiiy Components
icludes sockets, ICS 8.
FREE With each $75 order ot Microprocessor components,
S12.00 get a one year subscription to BYTE (he magazine lor
Value computer PHREAKS FREE FBEE FREE
8000 SERIES
8223
8230
8263
82S7
■3 0D
2.59
8820
S82G
8200
8210
8214
8220
DIGITAL COUNTER UNIT
4 Each - Man? Displays
* * 10000 Counter
'Complete with Board . .
♦
DIGITAL VOLTMETER KIT
0-2 Volt, Auto Polarity 3K digits (MAN7)
OVM M0S-LSI Design
Size: 2%"x 2%" x K"
$39.95
TTL Logic Probe Kit ^- — ^*-^
Detects TTL levels, ^S^ld^H^
pulses, with man 3 readout j
S9.95 per kit
DVP.l Chip Set Siliconix
LDII0 Digilal A/D Processor 16.00 s7fl00Sp,
mill Analog A/D Processor 13.00
DM8890N
Complete Horiz.A/ert. Divider
Chain for T.V. Type, Appl. 1.95 Each
4' POWER SUPPLY CORDS .
Black
59« ea.
THUMBWHEEL SWITCHES
NEW
PROTO BOARD IU0
Here's a low ci«t,li.B 10 IC caoacny
lireailbaaid I.11 wilh all the quality 1)1
QT Sockets and Hie best nl (he Proto-
Bnard series rninpletc down lo I lie
last nut. bolt and screw. Includes
2 0T 35S Sockets. I OT-35B Bus Strip.
2 5 wav binding posts: 4 rubbei leet.
nrnn, nuts, bolts, and easv assembly
POCKET CALCULATOR KIT
ilunc
nplu:
mt~
addressable muniury with
iniiividual recall - 8 digit
display plus overflow - bait
saver - uses standard or
rechargeable batteries - all
necessary parts in ready lo
assemble form - instruction
included. 3" x 51/."
OPTIONS-
115V AC Translormer . .
G each "N" Alkaline BatteriE
.394" DIAM. TRIMMER
W
STANDARD RESISTANCE VALUEI
MODEL 1X11 WCtl IK
Modal
ran
""JEn"'
.-.
iD-»
STDlOOfi
.36
.30
,'*&£.'/16 VECTOR BOARD
r-g&Tg^-
o*skm
..
WALL or T.V. DIGITAL CLOCK
12 or 24 Hour
25' VIEWINC, DISTANCE
Walnut Case G" i 3" :
Hi St Mm IT High
Seeomb-3" Higb
KIT ftllComp A Case S39.95
Wiipl1& Asseiulilcd 115 Vac S44.95
CA
MAN 1
MAN 2
MAN 3
MAN 4
MAN 7
DL33
DL747
DISPLAY LEDS
Com. Ano.
5x7 Matrix
Com. Caih.
Com. Caih.
Com. Ano.
Com. Cath.
Com. Ano.
DISCRETE LEDS
1.95
2.50
MV 10
MV 50
MV 5024
MV 502-1
MV 6024
MV £024
6 /SI 00
G/Sl 00
5;S1.00
\
IGn.n
18 pm
22 pin
14 pin
IE pin
18 put
24 pm
ICSOLDERTAIL - LOW PROFILE (TIN) SOCKETS
2548 50 100 I 2-1
SOLDERTAIL STANDARD (TIN)
?8 2G 28 pm !
SOLDERTAIL STANDARD (GOLD)
WIRE WRAP SOCKETS (GOLD) LEVEL .3
50 PCS. RESISTOR ASSORTMENTS $1.75 PER ASST.
ID OHM 12 OHM 15 OHM 18 OHM 22 OHM
27 OHM 33 OHM 39 OHM 47 OHM 5G0HM
G8 OHM 82 OHM 10U OHM 120 OHM 150 OHM
180 OHM 720 OHM270 OHM 330 OHM 390 OHM
470 OHM 560 OHM Gflu OHM 870 OHM
I ?K 1 5K 1 BK 2.2K
TOOK
270K
IK
27K
6.8K
1/flWATT S%~- 50 PCS.
1/4 WATT 5%= 50 PCS.
1/4 WATT SK* 50 PCS.
1/4 WATT 5% = 50 PCS.
1/4 WATT B%= 50 PCS.
l/fl WATT 5% = 5D PCS.
IrtWAiTBS* 50 Pes.
PRIME
INTEGRATED flSS, 8
CIRCUIT
ASSORTMENTS "SST '
ASST 1
SSI. TTL
1175 74IBD N19I MI93
Satisfaction Guaranteed. $5.00 Min. Order. U.S. Funds.
California Residents — Add 6% Sales Tax
Write for FREE 1975S Catalog — Data Sheets .25* each
P.O. BOX 822, BELMONT, CA. 94002
PHONE ORDERS - (415) 592-8097
ICS [E2£/^Lr3 KITS
FUNCTION GENERATOR KIT
luUJtMsmt,
XR-2206K '"*••>' "'ii
IMctiON nfHfmicti my squarevvave.
THO 0.5ft tW.;
AM'rM cjiiabili
XH2206KA $19.95
Includes monolithic funclion generator IC. PC board, and asseinlilv
instruclion manual.
XH2206KB $29.95
Same as XR 2206KA abowe and includes external components
lot PC board
TIMERS
XR555CP
XR320P
XR-55GCP
Monolithic Timer
Precision Timer
Dual-555 Timet
XR-255GCP Dual Timing Circuit
XR 2200CP Programmable CoonrerTimer
PHASE LOCKED LOOPS
XR-210 FSK Demotlulalor
XR2I5 High Fieqtiency PLL
XR567CP Tone Dccodei (mini DIP)
XR-567CT Tone Decoder IT0-5)
STEREO DECODERS
XRI310P PLLSleieoDecodei
XR-1310EP PLL Stereo Decoder
XR1SO0P PLL Stereo Decode.
WAVEFORM GENERATORS
XR-205 Waveform Generator
XR 22D6CP Monolithic Funclion Generator
XR 2207CP Voltage Conltolled Oscillator
OTHER EXAR ICS
XR I468CN Dual i 15V Tracking Regutatot
XR I488N Quad Line Orn/er
XR 1489AN Quad Lute Receiver
XR 2208CP Opsrational Multiplier
XR-2211 CP FSK DemodulatorTTone Decoder
XR-2261 Monolithic Proportional Servo IC System
w/4 ea. Oliver Transistoi
S 1. 10
155
5.20
6.60
i.95
I.JO
3.20
320
3.20
840
5.50
3.85
3.85
5.80
4 80
5.20
6.70.
♦ Special Requested Items*
HC-1'194 QmiTuck V Req SS.Sb
HC-1195 ' IS. PiLtk Bfg 3 35
MCI Ml HirjhSiUrt Qo Amu i 0U
MCJDJrlr1 4SD
CA313D Super CMOS OnAmn I J9
4114 10 3rtPNP 1 H
4DSH JrtNPrj i is
{Zcnerl
TYPE VOLTS
IN74G 3.3
IN7S1A 5.1
\Ulh2 5.6
IN753 G.2
IN754 0.8
IN96SB 15
IN5232 5.6
IN5234 6.2
IN5235 G.8
IN5236 7.5
IN456 25
IN458 150
IN485A 180
iNiani 50piv
IN400? 100 PtV
400m
400m
400m
400m
MODES
PRICE TYPE
4-1.00 IN4003
4 1 00 IM4004
4/1.00 IN3600
4/1.00 IN4148
4/1.00 IN4154
1T0D IN4734
.28 IN4735
28 IN473G
IN4738
IN4742
IN4744
IN11S3
(RKiliierl
VOLTS W
200 PIV I AMP
400 PIV 1 AMP
50 200m
6/1.00
6.1. 00
5/1.00
10m
lw
IN11B4
INII8G
IN 1188
50 PIV 35 AMP
100 PIV 35 AMP
200 PIV 35 AMP
400 PIV 35 AMP
TRANSISTORS
MPSA05
2N918
2N2219A
2N2221
2N2222A
2N23G9
ZNZ3B9A
2N2484
5/S1
25 2N2906A
3 SI 2N2907A
2N3053
5 SI 2N3055
5 St 2N3725A
4/S1 2N3903
4'S1 2N3904
i 3 SI 2N2907A TT
i SI 2N3053 j
5 SI 2N3Q55 II
5 SI 2N3725A I
2N3905
4/Sl 2M3906
5 SI PN4249
2 SI PN4250
95 2N4409
2 SI 2N5129
5,'Sl 2N5139
4 SI C1068I SCR
«
22 pi
47 pi
100 pi
220 Dl
470 pi
.OOlmt
.0022
,0047mf
.01ml
.15 35V
.22 35V
33 35V
47 35V .
.68 35V .
1 0 35V
CAPACITOR CORNER
50 VOLT CERAMIC DISC CAPACITORS
100 VOLT MYLAR FILM CAPACITORS
.10 .07 .022ml .13 11 .0
.10 .07 ,047ml .21 17 .1
.10 ,07 1ml .27 .23 .1
,10 .07 .22ml .33 .27 .!
K DIPPED TANTALUMS (SOLID) CAPACITOHS
.23 17 15 35V 30 26
23 17 2.2 25V 31 27
.23 17 3.3 25V 31 27
.23 17 4.7 25V 32 28
23 17 68 25V .36 31
23 17 10 25V 40 35
23 17 15 25V 63 50
URE ALUMINUM ELECTROLYTIC CAPACITORS
15 13
10
33 29 27
24 20 18
ALTAIR 8800 USERS !
Did you know...
• That all our modules are 1 00% compatible with the Altair 8800
computer, NO modifications necessary!
• That our 4KRA Static Read/Write Memory module doesn't have
to lose it's data when you pull the plug!
• That our 3P+S Input/Output module will fully interface two TV
Typewriters with keyboards and a modem or teletype at the
same time!
• That we make the most powerful alphanumeric Video Display
module anywhere!
•That our software is FREE, or close to it!
• That all our modules are truly high quality, computer grade, but
that our prices are the lowest in the industry!
• That we have already shipped hundreds of modules on time, and
we will continue to deliver what we promise, FAST!
CHECK THE SPECS:
4KRA Static Read/Write Memory
This 4096 word STATIC memory provides faster, more reliable
and less expensive operation than any currently available dynamic
memory system. The 4KRA permits Altair 8800 operation at
absolute top speed continuously. All RAM's (Random Access
Memories) used in the 4KRA are 91L02A's by Advanced Micro
Devices, the best commercial memory IC on the market today.
91L02A's require typically 1/3 the power of standard 2102 or
8101 type RAM's and each one is manufactured to military
specification MILSTD-883 for extremely high reliability. These
memories can be operated from a battery backup supply in case
of power failure with very low standby power consumption. (Ask
for our technical bulletin TB-101 on power down operation.) In
short we have done everything we could to make the best 4K
memory module in the computer field, and because we buy in
large quantity, we can make it for a very reasonable price.
Available now.
2KRO Erasable Reprogrammable Read Only Memory Module
With this module the Altair 8800 can use 1702A or 5203 type
Erasable Reprogrammable ROM's. The 2KRO accepts up to eight
of these IC's for a capacity of 2048 eight bit words. Once
programmed this module will hold its data indefinitely whether
or not power is on. This feature is extremely useful when
developing software. All necessary bus interfacing logic and
regulated supplies are provided but NOT the EPROM IC's. Both
1702A and 5203 PROM's are available from other advertisers in
this magazine for well under S25. Available now.
3P+S Input/Output Module
Just one 3P+S card will fulfill the Input/Output needs of most
8800 users. There are two 8-bit parallel input and output ports
with full handshaking logic. There is also a serial I/O using a
UART with both teletype current loop and EIA RS-232 standard
interfaces provided. The serial data rate can be set under software
control between 35 and 9600 Baud. You can use your old model
19 TTY! This module gives you all the electronics you need to
interface most peripheral devices with the Altair 8800, it's really
the most useful and versatile I/O we've seen for any computer.
Available now.
MB-1 Mother Board
Don't worry any more about wiring hundreds of wires in your
Altair to expand the mainframe. Our single piece 1/8-inch thick,
rugged mother board can be installed as one single replacement
for either three or four 88EC Expander cards, so you don't have
to replace your already installed 88EC card if you don't want to.
The MB-1 has very heavy power and ground busses and comes
with a piece of flat ribbon cable for connection to the front panel
board of the 8800, Available now.
VDM-1 Video Display Module
This module is the first real computer terminal display in kit
form. Under software control the VDM-1 displays sixteen 64
character lines to any standard video monitor. Characters are
produced in a 7x9 dot matrix, with a full 128 character set, upper
and lower case plus control characters. Data is accessed by the
VDM as a block from any 1K segment within the 65K address
range of the 8800 computer. Multiple cursors are completely
controlled by software and the display can begin anywhere on the
screen (this is great for many video games). When the last line is
filled the display scrolls up a line. Powerful editing capabilities are
provided with the FREE software package included in every
VDM-1 kit. Available in September '75.
SOFTWARE
Our Assembler, Text Editor and System Executive is being
shipped now. This software package gives you very powerful
Assembly Language capability in the Altair 8800. The Executive
and Editor allow you to call programs by name (including
BASIC) and then add, delete, change, or list programs by line
number. The Assembler provides a formatted symbolic mnemonic
listing as well as octal or binary object code from Assembly
Language programs written using the Editor. The Assembler also
gives valuable error messages to help in debugging those inevitable
errors. The Assembler, Editor, Executive Package No. 1 will be
available in read only memory along with an expanded Executive
and a powerful Interpretive Simulator by October or November
of 1975.
We are working on two BASIC Language packages which should
be ready by October. One will be a basic BASIC needing about
8K of memory as a minimum and the other will be an Extended
version with additional string manipulation, matrix operations
and double precision arithmetic capabilities requiring about 12K.
Both these packages will be available in Read Only Memory for a
reasonable price.
PRICE LIST
Item
Kit
A
ssembled Delivery
2KRO EPROM module
$ 50.
S 75.
2 weeks ARO
3P+S I/O module
125.
165.
3 weeks ARO
4KRA-2 RAM module
w/2048 8-bit words
135.
185.
2 weeks ARO
4KRA-4w/4096 8-bit
words of RAM
215.
280.
2 weeks ARO
RAM only, AMD91L02A
500n sec low power
8/S40
-
2 weeks ARO
MB-1 Mother Board
35.
-
2 weeks ARO
VDM-1 Video Display m
odule
160.
225.
Sept. 29, '75
then 3 weeks ARO
Send for our FREE fly
er for
more
complete
specifications and
for pricing on additional
items.
TERMS: All items postpaid if full payment accompanies order.
COD orders must include 25% deposit. MasterCharge gladly
accepted, but please send us an order with your signature on it.
DISCOUNTS: Orders over $375 may subtract 5%; orders over
S600 may subtract 10%.
E Processor Technology
2465 Fourth Street w
Berkeley, Ca. 94710 wis) 549-0857
Memory Dumps
<W;
REVIEW
The Elements of
Programming Style by Brian
W. Kernighan and P. ].
PI auger. McGraw-Hill, New
York, 1974. $3.95.
This book is required
reading for anyone who is
seriously interested in writing
good programs. Even the best
programmers (and especially
the most clever ones) can
profit from reading this book.
The authors take all their
examples of dubious
programming practices from
textbooks intended to teach
programming! Those of us
who have learned
programming from such
textbooks will find many of
the points made here useful
as well as amusing.
The intent of the book is
to teach programming style,
or the principles of writing
well-structured, readable
programs that work (in all
cases) and are efficient. The
approach is pragmatic and
down-to-earth, and can be
applied to every day
programming problems. All
of the examples are in
Fortran or PL/I, and can be
read and understood by
anyone familiar with either
language. The elements of
style, as the authors point
out, are applicable regardless
of the language being used,
Until somebody invents a direct link between human brains, the
only way to find out about methods and techniques is to read someone
else's "memory dump "... books, magazines and other sources.
Associate Editor Dan Fylstra has provided us with three reviews of
books which will prove useful in your home brew computer work
These memory dumps are not in hexadecimal or octai — and are
definitely "readable. "
. . . CARL
and the principles will be of
interest even to assembly
language programmers.
There are chapters on
writing computational
expressions, control
structure, input/output and
data verification, common
blunders, efficiency and
instrumentation, and
documentation. Each chapter
takes a series of example
programs, criticizes them,
rewrites them with
improvements, and then
extracts some general
principles of good
programming practice from
the examples. The principles
are summarized as a series of
short aphorisms which are
listed together at the end of
the book. Examples are
"Don't patch bad code —
rewrite it," "Test programs at
their boundary values," and
"Make sure comments and
code agree."
The more programming
experience you have, the
more you will appreciate this
book. Buy a copy for
yourself, read it, and keep it
around for reference! — d.h.f.
Designing Logic Systems
Using State Machines by
Christopher R. Clare.
McGraw-Hill, New York,
1973. $9.50.
This is an advanced text
on logic design which will be
of interest to anyone
embarking on the design of
large-scale logic systems. A
number of important and
valuable ideas are presented
here, apparently for the first
time. The methods were
developed by Tom Osborne
at Hewlett-Packard
Laboratories and were used in
the design of the HP
calculators. The main features
of the book are the
introduction of "Algorithmic
State Machines" (ASMs) to
describe logic systems, and a
comprehensive discussion of
logic synthesis using
Read-Only Memories
(ROMs).
An ASM is something of a
cross between a flowchart
and a finite state machine (it
looks like a flowchart, but
has boxes denoting states,
with assignments for state
84
variables). ASMs turn out to
be very convenient and
intuitive for describing
complex logic functions,
especially in the initial stages
of design.
The chapter on
ROM-centered design is
probably the most interesting
part of the book. It discusses
a number of techniques for
getting the most out of a
ROM, and trading off ROM
space and external decoding
logic. The material presented
here is difficult to find
elsewhere, and as the price of
LSI chips continues to drop,
the use of ROMs is becoming
increasingly attractive.
Two other sections of the
book are also noteworthy.
The introduction discusses
the nature of an algorithm —
a concept often
misunderstood by logic
designers — and the value of
modularity and functional
division. The chapter on
"Linked State Machines"
introduces the valuable
notion of interpretive linking,
in which a hierarchy of
machines is built up such that
each state of a "higher level"
machine can be described by
the ASM chart of a lower
level machine.
Other features of the book
are a complete discussion of
Karnaugh maps, including
techniques for constructing
maps for functions of more
than four variables, and a
brief treatment of logic
system simulation and
performance evaluation.
This book is suitable only
for those with some previous
background and experience in
logic design. The book is very
well organized, but it is
tersely written and requires
the reader to think and to
study the examples. The
comments on software linked
machines and computer
structures, especially those on
Turing machines, should not
be taken too seriously. The
reader who patiently studies
this book will profit greatly
from the time spent with it.
-d.h.f.
TTL Cookbook by Don
Lancaster. Howard W. Sams
& Co., Indianapolis, 1974.
$8.95.
This book should be in the
hands of every hobbyist who
experiments with digital
integrated circuits. It is also
recommended for those who
prefer to work with
"higher-level" microcomputer
system elements, since
microcomputer applications
often require at least a little
"random logic" in hardware.
The book contains a wealth
of practical information,
ranging from circuit
breadboarding techniques and
power supplies to
sophisticated design methods
using shift registers and
binary rate multipliers.
Besides providing a good deal
of useful information, the
book includes many pointers,
cautions and "words of
wisdom'' for the
experimenter.
The book consists of eight
chapters, one of which
provides a list of short
descriptions of the most
commonly used TTL ICs, and
another which outlines a
number of interesting
projects for the hobbyist.
Many amateurs will find
the first chapter, "Some
Basics of TTL," especially
valuable. It discusses practical
matters such as power supply
spike decoupling, current
requirements, monitoring
circuit states, tools, "bad"
and "burned-out" ICs, and
much more. The chapter on
logic is notable for its
explanations of positive and
negative logic, tri-state and
open-collector logic, and data
selectors and ROMs. Other
chapters cover gates and
timer circuits, JK and D-type
flipflops, counters, and shift
registers and rate multipliers.
The book does not discuss
traditional design techniques
such as Karnaugh maps and
state machines. The author
argues, with some
justification, that these
techniques do not often lead
to circuits with a minimal
number of IC packages and
therefore the lowest cost.
Instead the book lives up to
the promise of its title by
providing a tasteful selection
of "recipe" circuits - tried
and true ideas - which the
experimenter can put into
practice. Perhaps Don
Lancaster will follow up this
very useful book with
another one for "gourmet"
experimenters, -d.h.f.
85
rrrrn
7- Segment Readout
12-PIN DIP
Three digits with right-hand decimal
Plugs into DIP sockets
Similar to (LITRONIX) DL337
Magnified digit approximately .1"
Cathode for each digit
Segments are parallel for multiple
operation
5-10 MA per segment
EACH SI. 75 4 (12 DIGITS) $6.00)
RCA Numitron
EACH $ 5.00
SPECIAL: 5 FOR $20.00
DR2010
MOS MEMORY 2102-2
1024 Bit Fully Decoded Static MOS
Random Access Memory
-fast access 550ns
-fully TTL compatible
-n channel silicon gate
-single 5 volt supply
-tri-state output
-1024 by 1 bit
-chip enable input
-no clocks or refreshing
required
Brand New Factory Parts
16 PIN DIP Each $5.00
8 for $34.95
Power Supply SPECIAL!
723 DIP variable regulator chip 1-40V,
+ or - output? 150 MA 10A with exter-
nal pass transistor— with diagrams for
many appl ications.
EACH $1.00 10 FOR $8.95
5001 Calculator
40-Pin calculator chip will add, sub-
tract, multiply, and divide. 12-digit
display and calculate. Chain calcula-
tions. True credit balance sign out-
put. Automatic over-flow indication.
Fixed decimal point at 1, 2, 3, or 4.
Leading zero suppression. Complete
data supplied with chip.
CHIP AND DATA ONLY $2.49
DATA ONLY (Refundable)... $1.00
5002 LOW POWER CHIP AND DATA $12.95
High Quality PCB
Mounting IC Sockets
8-PIN, 14-Pin, 16-Pin and 24-Pin PCB
mounting 0NLY--no wire wrap sockets.
3-Pin $ .22
^^^tk
^fl , ^m 16-Pin $ .30
^B ^r 24-Pin $ .75
40-Pin $1.25
All IC's arc now and fully tested. Leads
are plated with yold or solder. Orders
for $5.00 or more will be shipped prepaid
Add 5 . ")5 for handling and postage for
smal ler orders ; residents of California
add sales tax. IC orders are shipped
within 2 workdays--ki ts are shipped with-
in 10 days of receipt of order . S10 . 00
minimum on C.O.D.'s.
Mail Orders to: ' phone
P.O. Box 41727
Sacramento, CA (916) 334-2161
95841
BRBVLOn
ELECTROniCS
Money back guarantee
on all goods!
Dale Trimmer
-12 turn trimpots which plug
into a DIP socket
-5K and 200K
-V x v x y
-4 leads spaced .3" x .2"
Each $1.00 10 for $8.95
1000 MHz Counter
11C05 Fairchild 1GHz Divide By Four
-DC to 1000 MHz operation
-AC or DC coupled
-Voltage compensated
-TTL or ECL power supply
-50 ohm drive output
-Lead compatible with Plessy SP613
-True and complement ECL outputs
-14 pin DIP
-Data and application notes
Each $49.95
MV50 Red Emitting
10-4 MA (a 2V
car;
MV5024 Red TO- 18
High Dome _j
MV10B Visible Red
5-7 MA g 2V
LED's
$ .20
10 FOR $1.25
10 FOR $2.95
$ .30
10 FOR $2.50
CMOS
CD4001 $ .45
CD4002 .45
CD4011 .45
CD4012 .45
CD4023 S .45
74C20 .65
74C160 3.25
3-Amp Power Silicon Rectifiers
MARKED EPOXY AXIAL PACKAGE
PRV
100.
200.
400.
600.
PRICE
.$.10
. .15
. .18
. .23
PRV
800..
1000.
1200.
1500.
PRICE
..$.30
. . .40
. . .50
. . .65
DIODE ARRAY 10-1N914 silicon
signal diodes in one package. 20
leads spaced .1"; no common connec-
tions.
EACH $.29
10 FOR $2.50
l,<.l
7400
74H00
7401
74H01
7402
7403
7404
74H04
7405
7406
7408
74H08
7410
7413
7417
7420
74L20
74H20
74H22
7430
74H30
74L30
7440
74H40
7442
7447
7450
74H50
7451
.20
.30
.20
.25
.25
.25
.25
.30
.30
.40
.30
.30
.20
.75
.40
.20
.30
.30
.30
.20
.30
.30
.20
.30
.00
.50
.20
.30
.20
74H51
7453
7454
74L54
74L55
7460
74L71
7472
74L72
7473
74L73
7474
74H74
7475
7476
74L78
7480
7483
7489
7490
7492
7493
7495
74L95
74107
74145
74180
74193
74195
.25
.20
.20
.25
.25
.16
.25
.40
.60
.35
.75
.45
.75
.80
.55
.70
.50
.70
3.00
1.00
.65
1.00
.65
1.00
.35
1.25
1.00
1.50
.65
7400 Series
DIP
25K Trimmer
PRINTED CIRCUIT BOARD TYPE
EACH $.20 10 FOR $1.50 1
Rectifiers
VAR0 FULL-WAVE BRIDGE
VS647
2A
600V
$1.10
MR810 Rectifier 50V 1A $ .10
Special 811: Hex Inverter
TTL DIP Hex Inverter; pin interchangeable with SN
7404. Parts are brand new and branded Signetics
and marked "811."
EACH $ .16
data 10 FOR 1.50
sheet 100 FOR 14.00
supplied 1000 FOR 110.00
811
WWW
1 AMP RECTIFIER
EACH $ .15
SALE 10 for $1.00
1N4O07 1KV PRV
Dip
MAN 4 7-Segment, 0-9 plus letters.
Right-hand decimal point. Snaps in 14-
pin DIP socket or Molex. IC voltage re-
quirements. Ideal for desk or pocket
calculators!
EACH $1.20
10 OR MORE $1.00 EACH
CD-2 Counter Kit
This ki t provides a highly sophisticated display
section module for clocks, counters, or other nu-
merical display needs. The unit is .8" wide and
4 3/8" long. A single 5-volt power source powers
both the ICs and the display tube. It can attain
typical count rates of up to 30 MHz and also has
a lamp test, causing all 7 segments to light. Kit
includes a 2-sided (with plated thru holes) fiber-
glass printed circuit board, a 7490, a 7475, a
7447, aDR2010 RCA Numitron display tube, complete
instructions, and enough MOLEX pins for the ICs...
NOTE: boards can be supplied in a single panel of
up to 10 digits (with al 1 interconnects); there-
fore , when ordering, please specify whether you
want them i n single panels or in one multiple
digit board. Not specifying will result in ship-
ping delay.
COMPLETE KIT ONLY $10.95
FULLY-ASSEMBLED wc ajir
UNIT $15.00 •Ei^38 ■:»? .-■>«.
Boards supplied separately @ $2.50 per digit.
L I N E A R S
NE555 Precision timer 90
NE560 Phase lock loop DIP 2.95
NE561 Phase lock loop DIP 3.00
NE565 Phase lock loop 2.95
NE566 Function generator T0-5 3.50
NE567 Tone decoder T0-5 3.50
709 Popular Op Amp DIP 40
710 Voltage comparator DIP 60
711 Dual comparator DIP 45
723 Precision voltage regulator DIP 1.00
741 Op amp T0-5/MINI DIP 45
748 Op Amp T0-5 80
CA3018 2 Isolated transistors and a Darling-
ton-connected transistor pair 1.00
CA3045 5 NPN transistor array 1.00
LM100 Positive DC regulator T0-5 1.00
LM105 Voltage regulator 1.25
LM302 Op Amp voltage follower TO-5 1.25
LM308 Op Amp TO-5 2.00
LM309H 5V 200 MA power supply T0-5 1.00
LM309K 5V 1A power supply module T0-3 1.00
LM311 Comparator Mini 1.75
LM370 AGC amplifier 1.7 5
LM380 2-Watt Audio Amp 1.75
LM1595 4-Quadrant multiplier 1.70
MC1536T Op Amp 1 .35
n.
*&w
': a
Jk* hjuJ^brtM. (Pen C
LETTERS
"Amateur radio is a
natural for the
computer hobbyist."
A TALE OF
TWO HOBBIES
Enclosed is $10 to cover
my charter subscription to
BYTE. 1 read about the
magazine in yesterday's issue
of HR Report. I think that it
is a great idea! It fills a need
that has been created by the
recent boom in the computer
hobby area.
I am a ham radio operator
(WB6ASR) and very
interested in interfacing this
hobby with computers. Since
BYTE is going to be
published by 73 it will be a
perfect magazine for those
who share my interest in
these two hobbies. I hope to
see many articles relating to
this subject. First off I would
like to see BYTE Magazine
lead the fight with the FCC
to allow ASCII to be used in
amateur radio along with (or
instead of) baudot. This is a
basic step that has to be
achieved in order to easily
interface the two.
Amateur radio is a natural
for the computer hobbyist. I
can see a network of
computers tied together by
repeaters. The group I am
affiliated with (AMT,
W6AMT, Box 1, Montebello
CA 90640) is very interested
in just that. For any help or
information BYTE may like
along these lines, feel free to
contact us.
I would also like BYTE to
cover all areas of computers.
Software: We should have a
library of programs for free
exchange among subscribers.
Hardware: The more
common computers that are
in the hands of hobbyists
should receive consideration
[all DEC computers
(including the new
mi c r o- p r o c e ss o rs and
micro-computers such as
PDP-8A and LSI-1 1), the
8080 family, Altair, etc].
Peripheral: Terminals — what
are the best ones for the
lowest cost such as
Decwritter II, floppy discs,
tape — Dectape, paper,
cassette.
Gregory D. Campbell
Montebello CA
Thank you for your
thoughts, Greg. We'll be
trying hard to fill the bill for
the home brew computer area
and its interface to amateur
radio - this new field of
computers in the home is
going to be big. We're in the
same stage relative to
c o m p u t i n g that
transportation was at the turn
of the present century -
thousands of experimenters
working on the applications
and engineering of products
which can eventually be mass
produced . . . just as no one
could imagine the eventual
impact of automotive
technology, the next half
centry in small computer
applications should be just as
interesting.
Why, in only that single
area of amateur radio
interfaces, the applications
are wide and varied: digital
remote control stations, the
repeater networks you
mention, digital station logs,
automated ham rigs, packet
switching communications
nets which will expand upon
the old amateur radio
telegram network concept,
program exchange
frequencies for computer-
hams to get together upon;
ASCII RTTY communica-
tions with intelligent
transmitter/receiver rigs to
send messages along with
error correcting codes.
. . . CARL
THE DEADLY
GRAPEVINE
STRIKES AGAIN
BYTE people:
Please find enclosed my
personal check for $10 to
cover a first year subscription
to BYTE.
I would also like to make a
few comments regarding your
apparent " 'computer freak'
only" editorial policy.
Amateur radio today is
one of the highest technology
avocations to be organized
worldwide. It is perhaps the
hobby with the most political
clout as well.
Fraternal attitudes have
traditionally led to
cooperative technology
development in amateur
radio. The possibilities of
time-sharing VHF-UHF
repeaters, packet-switched
worldwide traffic/data
communication networks, or
even the digital uses of the
OSCAR satellites seem
logically to preclude
exclusion of amateur radio
from BYTE.
Encourage hams to
become hackers, and hackers
to get their licenses. The
whole is too much greater
than the sum of its parts to
divide them at birth.
While I am on my
soapbox, there are some
thoughts about what I would
like to see from BYTE. How
about contests between
various game programs (bet
my checker program can beat
your checker program . . .)?
Standardization on a global
(met a) language for the
descriptions of programs and
algorithms? For fun it might
be nice to have a
mathematical games column
87
"Looking backward I'm
kinda glad it didn't
function properly when
first plugged in.
Otherwise, 1 would
never have learned what
certain circuits are
doing, why they are
doing it, and how they
are doing it."
(like Scientific American but
hobby oriented). Also, a
punched tape service for the
dissemination of programs
and other data would be
popular. As the only (big)
publication in the field
(hmmm . . .) I hope that
there is made some form of
guidelines for the storage,
format and medium of
information. You could have
"BYTE my ass" T shirts,
"BYTE by BYTE"
programming aids and
booklets, pocket guides for
innumerable things. You have
really stumbled onto a whole
new hobby at its birth
(adolescence?).
This letter has really tired
me out. Thanks for BYTE.
George Henry Flammer III
Stanford CA
PS: I was supposed to
mention here something
about a "life" membership or
subscription. So I will.
Ami going to hang myself
in a grapevine? This is
probably the first magazine
ever to get editorial criticism,
before a single issue is
printed! (I'll qualify that: it's
my first magazine...) The
points are well taken.
Examine the first issue and
you'll find a breadth of
articles ranging from games to
hardware — and we even have
a $99 introductory special on
"Life Time Subscription ..."
. . . CARL
NUTS AND GUTS
Happy to hear about
BYTE being initiated. If it is
in the tradition of 73, you
got one perennial
subscription. Since I'm not a
ham buff, I only occasionally
look at an issue of 73, but am
impressed with their content
and format. They haven't
been afraid to provide articles
that cost more than 15 bucks
and have a detailed discussion
of the circuit which until
recently has been my
complaint with PE, RE, etc.
I remember back in '63
when I worked for the now
defunct Electronics
Illustrated magazine that the
policy was tenth grade level
and under $10, and how can
we squeeze the articles
between the ads.
Anyway, maybe in the
near future, I can get
something together to submit
to BYTE. Right now I'm
trying to figure out why my
EXAM/DEP NEXT won't
work right on Altair. I had a
hell of a lot of bugs in the
unit until I got rid of the
Molex Soldercons. An aside, a
technique for plated thru
holes filled with solder:
Drilling out is not necessary,
which ruins the hole plating
and requires soldering on
both sides of the board. After
removing the Soldercon pins,
I used round toothpicks
which I pushed thru the hole
while holding the iron to the
soldered side.
Philosophically, computer
hobbyists must be nuts or
have a lot of guts, if I'm any
indication. Here I buy a
sophisticated piece of
equipment only knowing
vaguely how logic works,
with a 40-hr course in
FORTRAN, a VOM and an
ill-adjusted 1 5-year scope;
yet, I plunge head-long into a
vast unknown.
Which brings up another
want in future articles or at
least my preference. I seem to
prefer seeing timing diagrams
along with circuit
descriptions. At least this is
what I found out when I
analyzed my basic Altair to
de-bug it. The Altair manual
assumes "it'll work" right off
or "if not, give us a call." So,
my resort was to take each
circuit function and write
myself a description about it
with logic equations, timing
diagrams and everything I
could remember from a
course three years ago about
logic design (which I
incidentally took as a hobby
interest to learn how those
infernal machines
functioned). Looking
backward I'm kinda glad it
didn't function properly
when first plugged in.
Otherwise, I would never
have learned what certain
circuits are doing, why they
are doing it, and how they are
doing it. Now back to that
damn EXAM/DEP NEXT
circuit.
Bill Fuller
Grand Prairie TX
PS: Just got my copy of PCC
May issue. Seems that others
have had problems with the
EXAM/DEP NEXT mono
m/v in Altair. Anyway, with
all my self-inflicted problems
with the unit and some of
theirs, I'm not disappointed
in the unit considering the
price of the 8080 chip was
$360 at the time I went
Altair; with their new price
and the 8080 at $175 now, I
might not go it. But as Baba
Ram Dass says, "Do it now."
Thanks, Bill. Sounds like
you have all the prerequisites
needed for the home brew
computer hobby — curiosity
and initiative. The VOM and
scope certainly help, as well
as the course in FORTRAN.
But the really important
prerequisite is the desire to
know how computing
machinery and logic work.
The art of computing is what
BYTE is all about
translated into a personal use
context. This art has come a
long way since Napier's
Bones, Babbage's engines, and
Boole 's formal logic . . . and
it will go a long way in the
future as well - through
extensions of present
technology and new ways of
solving problems.
. . . CARL
88
five new
breadboard testers
from
Continental Specialties Corp. offers
a total line of breadboard test devices
. . . everything from inexpensive kits
to high-power professional units and
logic monitors too. Each high quality,
compact unit comes with a guarantee
of complete satisfaction or your
money back within 10 days. Here are
but five of the "hottest" items we make.*.
Power for the
Professional!
New Proto Boards
PB-203 and PB-203A
with built-in
regulated
short-proof
power supplies!
Ready-to-use. Just plug in and start
building! 2 extra floating 5-way binding
posts for external signals (PB-203 only). Completely
self-contained with power switch, indicator lamp and power
fuse. 24 14-pin DIP capacity. All metal construction...
no chipping or cracking as with plastic cases. Two-tone
quality case makes both PB-203 and PB-203A aesthetically,
as well as technically attractive.
PB-203
• 3 QT-59S Sockets
• 4 QT-59B Bus Strips
• 1 QT-47B Bus Strip
• Fuse • Power Switch
• Power-On Light
• 9.75"L X 6.6"W x 3.25"H
• Weight: 5 lbs.
• 5V, 1 AMP regulated power
supply
75.
Add $2.50 shipping/handling
OUTPUT SPECIFICATIONS
Output Voltage SV ± y4v
Ripple & Noise @ Vz AMP
10 millivolts
Load Regulation Better than 1 %
PB-203A
• 3 QT-59S Sockets
• 4 QT-59B Bus Strips
• 1 QT-47B Bus Strip
• Fuse • Power Switch
• Power-On Light
• 9.75"L X 6.6"W X 3.25"H
• Weight: 5 lbs.
• 5V, 1 AMP regulated power
supply (same as PB-203)
• +15V, y2 AMP regulated
power supply
• -15V, Vi AMP regulated
power supply
120.
Add $2.50 shipping/handling
OUTPUT SPECIFICATIONS
Output Voltage 15V, internally
adjustable
Ripple A Noise @ Vi AMP,
10 millivolts
Load Regulation Better than 1 %
Continental
Specialties Corp.
LOGIC MONITOR
brings ICs to life
faster than a scope . .
safer than a
voltmeter
LM-1 Q/95
OH- each
Add $2.50 shipping/handling
Self-contained, pocket size. No
adjustments or calibrations needed.
life into digital designs. Just
clip to any DIP IC up to 16 pins.
NO POWER SUPPLY NEEDED!
Simultaneously displays static and
dynamic logic states of DTL, TTL,
HTL or CMOS on 16 large high Intensity LEDs. Watch
signals work through counters, shift registers, timers,
adders, flip flops, decoders, entire systems. Concentrate on
signal flow and input/output truth tables. Forget probe
grounds, pin counting or sync polarity. Precision plastic
guides and flexible plastic web* insure positive connections.
Versatile. Fast. Accurate. Indispensable. Order yours today!
PROTO BOARD
100
A complete mini-
breadboard budget
kit with full IC capacity
Add $1.50
shipping/handling
The PB-100 is a low cost, big 10 IC capacity
breadboard kit, complete down to the last nut, bolt
and screw. Includes 2 QT-35S Sockets; 1 QT-35B
Bus Strip; 2 5-way binding posts; 4 rubber feet;
screws and easy assembly instructions. 4.50"
(114.3mm) wide x 6.00" (152.4mm) long x 1.35"
(34.3mm) high. Order your PB-100 kit! Start building
and testing now!
5EPR0T0-CLIP offers power-on .
hands-off signal tracing . . . under $5!
Trace signals or troubleshoot
fast. Inject signals or wire
unused circuits into existing
boards. Flexible plastic web"
construction eliminates
springs and pivots. Plus, the
narrow throat is perfect for
high density pc boards.
Order now!
PC-14 14-pin Proto-Cllp: $4.50 ea.
PC-16 16-pln Proto-Cllp: $4.75 ea.
Add $1.00 shipping
and handling
Scope probes,
test leads lock
onto unique
toothed grips
.?*'■
I i
COPYRIGHT CONTINENTAL SPECIALTIES CORPORATION 1975
All Continental Specialties breadboard test devices
are made in the USA, and are available off-the-shelf
from your local distributor or CSC. Direct purchases
may be charged on BankAmericard, Master Charge
or American Express. You get a FREE English/Metric
conversion slide rule with each order. Foreign
orders please add 10% for shipping/handling.
Prices are subject to change. Write or phone for
complete illustrated catalog, plus the name and
address of the CSC dealer nearest you.
"Patents Pending
■B
CONTINENTAL SPECIALTIES CORP.
44 Kendall St., Box 1942, New Haven, CT 06509 • 203/624-3103
West Coast Office: Box 7809, San Francisco, CA 94119 • 415/383-4207
CANADA: Available thru Len Finkler Ltd., Ontario
Byter's Digest
A Quick Kluge for Fastening
Wire Wrap Sockets to
Perforated Board:
-WIRE WRAP PINS
OF SOCKET
If you want to wrap up a
quick project, it is often
handy to use perforated
board (eg: Vector "P"
pattern VECTORBOARD) to
mount wire wrap sockets. I
have used many methods for
attaching boards — rivets,
bolts, epoxy glue,
cyanoacrylic glue, etc. One
method which I dreamed up
the other day to solve the
mounting problem for a small
test jig may prove useful to
you at some point. Simply
put the socket through the
perforated board, then solder
each corner pin with a "U"
shaped retainer made of bus
VECTOR P
PATTERN OR
EQUIVALENT
WIRE WRAP
SOCKET
EACH CORNER PIN OF
SOCKET HAS "U" OF
BUS WIRE SOLDER IN
PLACE AS RETAINER
Using retainers to anchor wire
wrap sockets.
wire (e.g. about 14 to 18
gauge.) The result is a strong
mechanical placement. When
you solder on the retainer,
use solder sparingly and
employ a soldering iron with
a narrow tip — of about 25
Watt capacity. Try to keep
the solder as low on the pin
as possible. When you wrap
the circuit begin the first level
of wraps higher up on the
pins with retainers, to avoid
the solder near the fastening.
CARL
A Note For Altair 8800 Users
A copy of an advertising
sheet was sent to me by
Gordon French of Menlo
Park, California, describing a
set of 8800-compatible
interface and memory cards.
The advertising sheet for
Processor Technology Co.,
2465 Fourth Street, Berkeley
CA 94710, mentions the
following items:
1 . 4k Memory Board Kit with
optional 1k ($85), 2k ($125)
or 4k ($225) variations.
2. PROM Card Kit for Intel
1702A or National 5203
ultra-violet erasable PROM's,
comes with address decode
but not PROM's (you'll need
a programmer and PROM
chips) at $45.
3. I/O Board Kit providing
both parallel and serial
interfaces to the "real
world." A UART is used for
the serial interface optionally
under program control, with
selectable baud rates, choice
of four EIA plus TTY and
TTL serial interfaces ($125).
The ad sheet said delivery
begins June 1. If you're
interested, I suggest you write
these people to find out
further details.
Electronic News (June 9,
1975) reports in an article by
Paul Plansky the
announcement of a 12-bit
PDP-8 compatible CMOS
processor chip to be
produced by Intersil. This
sounds like a great idea for
the home brew computer
market — but not for a while.
The "hardware starter kit" is
reported to cost $3050 for a
set of three boards.
The boards include a
memory board with 4k
words, a CPU board with
TTY interface, and a control
panel board. The primary
advantage outside of PDP-8
software compatibility is the
CMOS nature of the product
— the entire computer (all
three boards) is quoted at a 2
mW requirement. (How this
number is compatible with a
TTY current loop output is
not clear — but it is
reasonable for the CMOS part
alone.) This computer is not
yet in a position where it can
be used by the home brew
computer market — but the
idea of a PDP-8 (or PDP-11)
compatible home brew
machine is quite attractive
due to the large amount of
"public domain" software
available for these machines.
James Fry's
Prototyping Board
James Fry, PO Box 6585,
Toledo OH 43612, sends
along the layout of a general
purpose prototyping board
designed to mate with the
connectors of the original
TVT-1 TV Typewriter design
of Don Lancaster. Jim has
used his board in the process
of modifying the design to
mate with his 8008 system.
The holes at the edge of
the board allow for additional
input and output connections
plus the mounting of the
Molex pin and socket
combinations needed to
extend the stack of TVT-1
boards by an additional
layer. Jim will provide
copies of this board undrilled
for $6 postpaid, or you can
take the idea and lay out
your own version for contact
printing and home
fabrication.
sifiiiiiiii tiitiiini iiiiiiiiii
m iiiiiiiiiiiiii
! Illlllllllllllllllllllllllllllllllllllllllllllll .=
liiTririirriTiIIr
90
^P We've got a bunch of these fantastic video display terminals . . . and we've got a
little problem. We promised Sanders Associates that we would sell them as scrap. A
couple of wires disconnected makes them scrap, right? These VDTs should be great for
SSTV, for a GW/RTTY keyer terminal, an oscilloscope, weather satellite monitor, or
even a computer terminal (which they were). We've tested some of these and they
seem to be near-perfect. You aren't likely to find a VDT system like this for less than
ten times the price ... so order several right away while we've got 'em.
! G: ASCII KEYBOARD - This is the ASCII
encoded keyboard used with the SANDER'S
ASSOCIATES 720 System Terminal. Plugs into the
front of the chassis mounting base. Makes a very
professional Video Readout Terminal combination.
These keyboards are in like new condition, have
interconnection data etched on the IC- Diode
matrix PC board. Tliey can be readily used for any
ASCII encoded requirement. Similar keyboards,
when available, sell for almost two times the very
low SUNTRONIX price of - $49.95. PPD
ITEM F: ENCLOSURE AND BEZEL FOR 12" CRT -
This is the frosting on the cake. All components A
thru E fit perfectly inside this enclosure. It is
hinged and can be lifted for easy access to the
electronics. It will really dross up any project.
Measures approx. 22 "L x 18"W x 20"H and weighs
approx. 10 lbs. Made of steel with a handsome blue
crackle finish. Get 'em while they last, for —
SI 1.95 (inci. bezel) FOB.
ITEM B: BASIC CHASSIS AND MOUNTING BASE for
12" big-screen CRT. Tube can be mounted either
vertically or horizontally by rotating front plate 90
degrees. Comes with base, on-off sw. and intensity
control, four controls for vert, and horiz. Has
plenty of room for most any electronics needed for
your pet project. All subassemblies offered will
perfectly fit in spaces provided. Why try to cut the
metal yourself? This chassis will let you con-
centrate on the electronics instead of the melal-
work!! Order now for only - SI 4.95 FOB, less
CRT.
ITEM A: VERTICAL AND HORIZONTAL AltiPLlFIER
Subassemblies - Good for a conservative 150V/
complementary DC coupled output. Freq. resp.
beyond 2.0 MHz. Parts alone worth many times
the low, Sow price of - $6.95 ea., or both for
$10.95 PPD
I C: FOUR PC BOARDS CHOCK-FULL OF
GOODIES - Two D/A converters, one IC-loaded
logic board, and one multipurpose board. We have
no schematic data for these boards at present. We
will supply any data vsc obtain [o purchasers as we
gel it. Of course ivhen we finally figure out what
these boards are good for, the price will change
accordingly. Take die gamble now and well
provide any data we get free of charge. Buy all four
boards or just one — $1.50 ea. (our choice) or all
four for S5.00. PPD
ITEM D: CRT HIGH VOLTAGE POWER SUPPLY -
This is a real super CRT High Voltage Power
supply, providing all voltages needed for any CRT.
Outputs 10-14KV DC, plus 490 Vdc, minus 150
Vdc. Needs inputs of plus 5.0 VDC, plus 16.0 VDC
and a drive signal of approx 8.4 kHz @ 1.0 vrms or
more. All inputs/outputs via plug/jack cables and
even has a socket/cable assy for the CRT. A very
fine buy at only - S14.95 (incl. data) FOB
<r3-
BL
7&
fe34£$Q*fi|
ITEM E: LOW VOLTAGE POWER SUPPLY - A real
brute used to supply all low voltages needed by the
original 720 CRT Terminal. Input, 117V AC, out-
puts: plus 16.0 VDC © 10.0 A; minus 16.0 VDC d>
10.QA; plus 5.0VDC @ more than 2.0A, all
regulated. Mounts on the rear of the Basic Chassis
(Item B) Weighs approx 45 lbs and will be shipped
with interconnection data for only — S19.95 FOB.
PACKAGE DEAL — For the really serious experimenter we'll make a very special offer — you can
buy all of the sub-assemblies listed above plus a good 12" CRT, a muffin fan for cooling. We'll
supply instructions for interconnection for all subassemblies so that you can, within minutes after
receiving this once-in-a-lifetime deal, put an X-Y display on the CRT. We'll also include a list of
possible applications for those with short imaginations! Don't miss out on this real money-saving
buy; the individual prices for the sub-assemblies add up to $127.70. You can buy the entire
package for a very low package price of — $79.95 FOB.
On all postpaid orders, please ADD $1.50 to cover handling costs. Orders
shipped same day in most cases.
«flMU
GOfllWHlY
6 KING RICHARD DRIVE, LONDONDERRY, N.H. 03053
G03 -434- 4 6 4 4
91
Byter's Digest
The Inventors of the Prepunched Perforated Board Have Done it Again.
- .:
: -\ '
l!
?;:;
::::::::::::::::: jjiiliiiiUiuI'
::::::::::::::::::::::::.::::.f
Edge connector configuration on Vector 3662A-6 Plugbord
reduces insertion forces by 2-1 12 lbs.
The Vector Electronic Co.,
Inc., announces a new variant
on a traditional theme — the
idea of a printed circuit edge
connector with a lower-
insertion force due to a
unique design.
Special W-shaped cut on
the printed circuit board edge
connector reduces insertion
forces by two to eight
pounds, depending on the
type of receptacle and the
number of contacts. First
used on Vector Electronic
Company's new Model
3662A-6 board, the "W" cut
consists of a slight inwardly
tapering chamfer across the
face of the card edge which
allows the board to be
inserted with a gradually
increasing force instead of the
conventional high peak
pressures. In addition, the
two outside ground terminals
engage first and disengage last
to protect circuits if the
board is inserted or removed
with the power on.
According to the press
release this technique will be
used on all new Plugbords
manufactured by Vector.
Vector cites tests on 22/44
edge connectors with
terminals on 0.1 in. centers
which indicate that average
insertion force with the "W"
cut is 9 lbs. compared to 11
lbs. with a conventional
straight configuration.
Average force on 15/30
connectors with 0.156 in.
centers drops from 1 3 lbs. to
6.5 lbs. Similarly, average
insertion force on 22/44
connectors with 0.156 in.
spacing is reduced from 16.5
lbs. to 14 lbs., while the
pressure on 36/72 connectors
with 0.10 in. spacing declines
from 31 lbs. to 23 lbs. With-
drawal forces are unchanged
by the new technique.
The Vector Model
3662A-6 board illustrated has
22/44 edge contacts with
0.1 56 in. spacing. Contacts
are two-oz. copper, nickel
plated and gold flashed for
long life and low contact
resistance. Individual contacts
are numbered for easy
identification. The 4.5 in. by
6.5 in. by 0.0625 in. board
uses a new blue-colored
FR4-type epoxy laminate
which meets or exceeds
Ml L-P-1 3939-E GF.
Prepunched 0.042 in. dia.
holes are spaced on 0.1 in.
centers. The top surface of
the board has markers for the
number one pin of 14-pin
DIPs across the field and
component placement indices
around the board's periphery.
The reverse side has a two-oz.
copper ground plane with
solder coating.
The boards are priced at
$7.55 in unit quantities with
volume discounts available.
Delivery is from factory
stock.
Vector Electronic Co.,
Inc., 12460 Gladstone Ave.,
Sy I mar C A 9 1 342.
1-213-365-9661; TWX
910-496-1539.
THE BIT BUCKET is the
name of a new publication
now available from National
Semiconductor Corporation
(mailing address:
COMPUTE/470, National
Semiconductor Corporation,
2900 Semiconductor Drive,
Santa Clara CA 95051). The
Bit Bucket is a user
"newsletter" supported by
National, with a subscription
tab of $1 5 per annum, for the
purpose of exchanging info
on the products National
manufactures: IMPs of all
kinds and the new PACE
16-bit micro. The info I got
(in Volume One, Number
One) includes seminar
schedules, plugs for products
of members of the club, a
solicitation of members in
COMPUTE (Club of
Microprocessor Programmers,
Users and Technical Experts),
descriptions of an assembler
and listings of the library of
complimentary packages of
software. If your home brew
system idea is growing
aPACE, you might find this
publication useful . . . CARL
92
RAYTHEON KEYBOARDS
From Raytheon Corp. and we were told they were made for the
FAA in air traffic control computers. Appear to be unused
condition. Switches are magnetic reed relay. Ascii encoded with PC
board mounted under the switch board. Sorry to say but have no
data with these at this time.
Ship wgt. 6 lbs #SP-139 $30.00
HONEYWELL KEYBOARD
A nice purchase from Honeywell of these unused
keyboards with reed relay, magnetic switching. No
encoder with these and they can be used in a variety
of ways . . . Morse code generator, TV print out,
terminal keyboard for computer work, etc. If you
want an all purpose keyboard in new condition, this
is it. Only about a hundred left. The price is deserving
of a second look as it's a give-away.
Ship wgt. 5 lbs #SP-165 $20.00
ASCII ENCODED
From one of Americas largest manufacturers of keyboards. ASCII
encoder mounted beneath board using ICs Picture shown is typical
keyboard. There seems to be no end to customers wanting
keyboards and we are lucky enough to keep coming up with more.
These are clean and with all keytops in place.
Ship wgt 6 lbs #SP-122 $35.00
KEYBOARDS
A bargain in computer keyboards with encoder board attached. The
low price is due to the fact that a few keytops may be missing. So if
you can improvise, you acquire a bargain keyboard. We will furnish
missing keytops though they may not have the correct letter, but
you can stick any letter you want with tape. At $10 you can hardly
miss.
Ship wgt. 6 lbs #SP-123 $10.00
|ttnrrs'r?tl * i "
^y*rT*?,r~»~* mm mm
UNIVAC KEYBOARD
This keyboard with encoder (Holarith) mounted in dust proof
enclosure has been one of our best movers no doubt due to its
handsome desk top appearance. The encoder board is easily removed
for re-working and the case is gray plastic. We have sold over a
thousand of these to date and were sold out. But along came a
supplier with several hundred more and we are back in business.
Same price as we sold them for the last two years, no upgrading of
price.
Ship wgt. 6 lb #SP-124 $35.00
• • .-, ,
laniiBieist
BisanaisQies
si9iii8aeiiis
Please add shipping cost on above.
MESHNA P0 Bx 62 E. Lynn Mass. 01904
siie&fincz.
FREE CATALOG
BELLTONE PAGER
Genuine "Ma Bell" belt clip
radio receiver beeper. Picks up
specific radio signals in 35
MHz area, encoded by internal
reed encoder. Seems to be a
"natural" for construction
jobs, in-plant calling. An inter-
esting experimental gadget.
Self contained antenna, adjust-
able coding by shifting wires
on coding module.
#SP-125 $5.00 each, 6/$25.00
93
THE COMPUTER "SYSTEM" CONCEPT
A COMPUTER with a BUILT-IN CONSOLE TERMINAL from SPHERE
The SPHERE 1 computer system was
designed to provide an uncompromising
computer system at minimal cost.
Keyword . . .
"System"
The keyword to our design Is tne
world "SYSTEM". Every phase of the
design has been influenced by the
"SYSTEM" philosophy. To justify the
system title, a "COMPUTER" must
perform an application acceptably. Re-
cently the cost of peripherals and soft-
ware have substantially exceeded the
cost of the computer, but without them,
a computer cannot perform much of
anything acceptably.
With the onset of the
micro-processor, real design innovations
have been possible, but without the
system philosophy, a micro-processor
can only reduce the processor cost.
Peripherals, memory, and software
continue to be expensive.
The SPHERE 1 computer is uniquely
cost effective because it utilizes real
design innovations to reduce the amount
of circuitry required throughout the
system. The SPHERE add-on memory
board will support 4, 8, 12, or 16K of
dynamic random access memory (instead
of four 4K memory boards and a mother
board). Our power supply has been
placed in a separate chassis to eliminate a
common source of heat. This allows the
system to run cooler and eliminates the
need for an expensive fan. The system
uses a standard TV for a 512 character
display. The use of the TV and other
common components has reduced the
cost and allowed more machine
versatility. Further cost reductions have
been achieved by replacing the front
console (lights and switches) with the
TV terminal and a program in Read Only
Memory (ROM) that performs the same
function, only better.
The Processor...
A One Card
Control System
The CPU card is Packaged to provide
all of the basic functions required by a
useful system. It contains a Motorola
M6800 micro-processor which is the
most advanced micro-processor on the
market today. The CPU Module also in-
cludes 4K words of random access mem-
ory which is the "minimum" required to
perform useful functions. Sixteen lines
of digital I/O have been provided as on
option on this board. This allows the
module to act as a stand-alone "system"
in many instances. Further innovations
have been added to enhance it's
"system" capability. They are:
1)a Real-Time clock with INTERUPT
capability at 31, 62, 125, 250, & 500
HZ.
2)buss lines are "high-drive" buffered to
run many more peripherals.
3)the system buss is driven over flat-
cables which means no mother-board is
required for expansion and the system
may be configured with space utilization
efficiency.
4)the CPU has been provided with 1 K of
Programmable Read-Only memory. This
memory can contain a complete process
control program for many applications.
When initially delivered, it contains the
PDS system which is described later.
Peripherals...
Floppy Disks, Line
Printers, Paper
Tape, Terminals..
In order to insure a full offering of
high quality peripherals from the onset,
we have selected manufacturers who
already have peripherals which interface
to our product. This philosophy has
allowed us, in the case of our disk, to
select already running software (namely
a disk operating system) which we may
offer to our users immediately. Other
peripherals that are available with our
system include a low cost line printer
and a paper tape reader/perforator.
These devices are interfaced to the
system via a single interface module
which also serves as a programmable
digital Input/Output port.
The Keyboard module includes
tactile feed keyswitches, 2 key roll-over
encoding, a numeric keypad and a star
cursor editing keypad. The SPHERE
system also supports the lowest cost
terminals available today.
PDS....
unparalleled
The Program Development System
(PDS) includes an EDITOR, and
ASSEMBLER, and a debugging package.
It also includes CRT display and audio
cassette software drivers, plus a cassette
loader and dumper. Although most
computer processing occurs at the
character (8 BIT) level, it is sometimes
desirable to use 16 bit arithmetic so we
have provided an extended instruction
set in the PDS system. The extended
instructions include 16 bit multiply,
divide, add, subtract, etc. The
instructions include input/output and
binary (16 bit) to ASCII to binary
conversion. PDS is entirely contained in
the read-only memory of the CPU
module. It rounds out the "SYSTEM"
concept of our smallest systems.
Basic Language
FREE!!
The BASIC package includes t
following utility commands: APPEN
CATALOG, DELETE, GET, KIL
LENGTH, LIBRARY, LIST, NAM
RENUMBER, RUN, SAVE, Ar<
SCRATCH.
The operators are: =, less tha
greater than, less or equal, greater
equal, not equal, AND, OR, NOT, MA
MIN. The statements are: CHAIN, CO
MON, DATA, Dim, EN
FOR . . . NEXT, GO TO, TO ... O
GOSUB, IF . . . THEN, IMAGE, INPU
LET, NEXT, PRINT, PRINT USIN
READ, REM, RETURN, STOP. T
functions are DEF, ABS, EXP, IN
LOG, RND, SQR, SIN, TAN ATN, LE
SGN, TAB. Matrix operations are: DOI
MAT IDN, MAT ZER, MAT CON, M/
INPUT, MAT PRINT, MAT +, MAT
MAT *, =, MAT TRN, MAT INV. F
processing statements are: OPEN, KIL
FILES, PRINT # READ #, END #. Fl
string processing is supported.
This package will run in a 20
system with about 8K for user prograrr
An 8K subset of our BASIC is availab
with 4K available for user programs. /
Sphere software is a part of tl
"SYSTEM" price, and is available
"SYSTEM" users for a minimal copyii
fee.
The FLOPPY DISK OPERATIN
SYSTEM (FDOS) is supplied on :
systems purchased with a disk un
FDOS is an extended PROGRA
DEVELOPMENT SYSTEM. It provid
for named files, an extended editor,
full assembler, and debugging systei
This system includes a comprehensi
300 page programming manual.
System Concept
a Commitment
The software supplied to make
Sphere System a useful "SYSTEM"
attractive; however, the real contribut
that SPHERE offers is one
commitment. The SPHERE "SYSTE
concept demonstrates only the surf,
of the real technological advances tl
are possible when true design innovati
is combined with foresight a
state-of-the-art technology. ~\
SPHERE "SYSTEM" concept is tl
commitment.
WATCH AND SEE.
OEM'S CHECK WITH US . . .
WE'VE GOT COMPLETE ONE BOA
CONTROL SYSTEMS FROM UNC
$600
AMBITIOUS TYPES CHECK WITH US
WE'VE GOT COMPLETE SYSTE
STARTING AT $650. («ITS)
Bank Americard and MasleiCharge accepted
SPHERE
CO
96 E. 5th South, Bountiful, Utah 84(
$650
HOBBIEST!
. 8-BIT PARALLEL COMPUTER
• 4K WORDS of read/write memory
i MOTOROLA 6800 MICROPROCESSOR
• KEYBOARD WITH NUMERIC KEYPAD
$750
INTELLIGENT!!
USER PROGRAMMABLE
FIRMWARE ASSEMBLER, EDITOR
LOADER & EXTENDED INSTRUC-
TIONS
16 LINE X 32 CHARACTER DISPLAY
23 KEY KEYBOARD
BUILT IN MODEM
AUDIO CASSETTE INTERFACE
CASSETTES AND TV'S SHOWN FOR
ILLUSTRATION ONLY
INTRODUCTORY OFFER ENDS SEPTEMBER 30, 1975
96 EAST 500 SOUTH - BOUNTIFUL, UTAH - 84010
BOTE
reader
service
To get further information on the products advertised in this
issue of BYTE merely tear, rip, or snip out this advertiser index,
fill out the data at the bottom of the page, mark the appropriate
boxes, and send the works to BYTE, Peterborough NH 03458.
Readers get extra Brownie Points for sending for information
since this encourages advertisers to keep using BYTE - which in
turn brings you a bigger BYTE.
ADVERTISER INDEX
□ ACM CM
□ AP Products CI 1 1
□ Babylon 86
□ Delta 43
□ Godbout 8, 60, 61
□ Hickok 48, 49
□ James 42,82
□ Martin Research 1
□ Meshna 93
D Micro Digital 2
D MITS CIV, 7,71, 81
□ Processor Technology 83
□ RGS 59
□ S.D. Sales 80
□ Scelbi 38,39
D Solid State 89
□ Sphere 94, 95
□ Suntronix 91
□ Wahl 70
To help the editors with a profile of the readers — what type of
work do you do?
Have you a microprocessor running yet?
so?
Messages for the editor:
and which, if
Reader's Service
BYTE
Green Publishing Inc.
Peterborough NH 03458
Please print or type.
Name
SEPTEMBER 1975
BYTE acquired via
□Subscription
D Newsstand
□ Stolen
Address
City
State Zip
Coupon expires in 60 days . . .
How BYTE started
from page 9
BYTE - make it a 24 pager.
After talking the idea over
with a couple of the
manufacturers in the field it
was obvious that we had been
thinking too small. Okay,
let's make it 5000 copies. The
first announcement of the
project was made in Hotline,
an amateur radio newsletter
with a very small circulation.
The reaction was immediate:
subscriptions began to come
in at a good clip.
As mailing lists came in
from manufacturers and as
the word spread, the first
issue print run was upped to
10,000 . . . then
25,000 . . . 35,000.. .and
finally 50,000 copies! As
promises of ads came in there
was a scramble to get enough
articles to keep up with the
ads. Ads are certainly of
interest, but we didn't want
to publish an all advertising
magazine.
No apologies are needed
for the articles in this first
issue — between Carl's
contacts and mine we got
things started. It would have
been a lot easier if our
original idea of a 1000 copy
24 page magazine (with
maybe 30% ads) had come
about. On the other hand,
here is a great opportunity
for all of you readers to get
busy at your typewriter and
pass along your particular
area of expertise. The need
for good articles is
great . . . material for the
rank beginners as well as the
sophisticated computer
designers . . . hard-
ware . . . software . . . surplus
conversions . . . applications.
As we build a body of
hobbyists, the market for
reasonably priced equipment
will be almost inexhaust-
ible . . . microprocessors,
video display units,
keyboards, tape gear, discs,
teletypes . . . endless list.
MITS, RGS, Scelbi and
Southwest Tech have a good
start ... are you going to let
them make all the money?
Speaking of MITS et al, it
didn't take me long to get
one of the Altair 8800s to see
what I could do with it. I'm
afraid I didn't make it very
far into the instruction book.
I've got some more memory
coming for it as well as their
extended basic program and
some I/O interfaces to hook
onto a teletype or a VDT. 1
do have a VDT unit up and
working ... the Southwest
Technical job which we got in
kit form and which was
assembled over a weekend on
a card table, with a good deal
of the work being done by
my 1 2 year old daughter.
And, believe it or not, the
unit works! We all agree that
it was a lot of fun to assemble
and we're glad we went the
kit route ... we wouldn't
have missed the fun. SWTPC
sure did a fantastic job of
getting that kit designed and
produced.
Well, that's how BYTE got
started. Now it's up to
you . . . you can guide the
magazine with your
advice . . . with your
articles . . . and with your
support in getting more
subscribers. We'll do all we
can to make the magazine
accurate, have plenty of
interesting ads, look nice and
come out on time. None of
this is easy, of course, but
we're in one of the nicest
areas in the country — in
southern New Hampshire —
working in a 220 year old
colonial mansion — and we
have an efficient system
where everything except
printing and mailing of the
magazine is done under the
one roof. If you happen to
find yourself wandering
around a bit northwest of
Boston, why please drop in
and say hello. We're very
friendly and the atmosphere
is unbelievably re-
laxed . . . except near press
time.
. . . WAYNE GREEN
96
NEW . . . from A P Products
c
O
o
ALL-CIRCUIT EVALUATOR
OBSOLETES ordinary breadboards — for fast,
solderless, plug-in circuit building and testing
A-C-E
2QD-K
4-9/1
by 7"
V special 20% off
introductory offer
A-C-E $^095
2D1-K
ASSEMBLE-IT-YOURSELF KIT
Now you can enjoy the pleasure and convenience of checking
out your circuits on an ACE from A P Products at this special
low price! Just plug in and power up ... no soldering required!
Incorporates the famous A P multi-tie-point plug-in feature
throughout for optimum circuit design flexibility.
OFFER EXPIRES SEPT. 30, 1975
No.
ACE's
Model
Wo.
Total
Price
Total cost of ACE's
Residents of California
and Ohio add sales tax
Postage and Shipping
1
50
ORDER TOTAL $
ORDER TODAY AND SAVE D CASH: checkor M.a enclosed
□ CHARGE: Master Charge j^ffi
□ CHARGE: BankAmericard mm I— I Send
r I FREE catalog
Acct. No
Expiration date ,
Send order to:
^S A P PRODUCTS
U INCORPORATED
Box 110-G, 72CorwinDr.
Painesville, Ohio 44077
Master Charge Interbank No.:
a NUMBERS OVER YCUfl NAME
On all models . . .
simply plug in your
components and inter-
connect with ordinary 22-ga.
solid wire. No special patch cords
required. All models will accept all
DIP'S, TO-5's and discrete components with leads up to .032"
diameter. Multiple buses can easily be linked for power and
ground distribution, reset and clock lines, shift command, etc.
ACE 200-K ... 728 tie points, holds up to 8 16-pin DIP's,
two buses, two 5-way binding posts, kit form . . .$18.95
ACE 208 .. . 872 tie points, holds up to 8 16-pin DIP's,
8 buses, two 5-way binding posts, assembled . . . $28.95
ACE 201-K . . . 1032 tie points, holds up to 12 14-pin DIP's,
two buses, two 5-way binding posts, kit form . . .$24.95
ACE 212 .. . 1224 tie points, holds up to 12 14-pin DIP's,
8 buses, two 5-way binding posts, assembled. . . $34.95
ACE 218 .. . 1760 tie-points, holds up to 18 14-pin DIP's,
ten buses, two 5-way binding posts, assembled . $46.95
ACE 227 .. . 2712 tie points, holds up to 27 14-pin DIP's,
28 buses, four 5-way binding posts, assembled . .$59.95
ACE 236 .. . 3648 tie points, holds up to 36 14-pin DIP's,
36 buses, four 5-way binding posts, assembled . .$79.95
MATERIALS
Anodized aluminum bases (also serve as ground plane); acetal copolymer
dielectric; non-corrosive nickel/silver tie-point terminals; rubber bench feet.
A P PRODUCTS INC. . Box 110-G • Painesville, OH 44077
/ —
■s
>
In
m
rb
n
r-T\
n-M-.r-i
L^J
□
n~n
MIT5 ALTAIP BQOD compLTER
wmssa
n
uU
U
y
/■
>
51
f \
t
V
N
\
nfb
n
Lin
n